Hi David,

> I recently picked up the latest libobjc2 and gnustep-base libraries, while 
> working on a clang build of some ObjC and ObjC++ programs on Ubuntu Linux.  
> The latest codebases solved a number of other problems I was having, but a 
> symbol is now missing in a shared library that some sub-programs use, causing 
> those programs not to link.  Here is a representative example:
> 
> /home/dlobron/build/clangport/akamai/llvm/llvm-5.0.0.install/bin/clang  
> -rdynamic     -m64  -rdynamic  -pthread  -fexceptions 
> -fobjc-runtime=gnustep-1.8 -fblocks -o obj/list2tree \
>               ./obj/list2tree.obj/list2tree.m.o \
>                 
> -L/home/dlobron/build/clangport/akamai/AkamaiKit/Tools/../../common/lib 
> -L../AkamaiKit.framework/Versions/Current/.    
> -L/home/dlobron/GNUstep/Library/Libraries 
> -L/home/dlobron/build/clangport/akamai/common/GNUstep/Local/Library/Libraries 
> -L/home/dlobron/build/clangport/akamai/common/GNUstep/System/Library/Libraries
>    -lAkamaiKit -lXMLKit -lopenssl   -lgnustep-base   -lpthread -lobjc 
> -fobjc-nonfragile-abi   -lm
> ../AkamaiKit.framework/Versions/Current/./libAkamaiKit.so: undefined 
> reference to `vtable for gnustep::libobjc::__objc_class_type_info'
> clang-6.0: error: linker command failed with exit code 1 (use -v to see 
> invocation)
> 
> Here, libAkamaiKit.so is a shared library.  Upon examination, the symbol in 
> question is indeed present and not defined:
> 
> U vtable for gnustep::libobjc::__objc_class_type_info

note that the missing reference is for a vtable, a virtual method table for a 
C++ class. It looks like the code in libAkamaiKit.so is compiled with 
(Objective-)C++ and you should use clang++ for linking rather than clang to 
have linker provide this vtable object.
Or maybe gnustep::libobjc::objc_class wasn't intended to be compiled as a C++ 
class?

Wolfgang
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to