2016-03-30 1 views
0

Это процедура, которую я использую для создания dylib и ее использования, пожалуйста, помогите мне. Я новичок в dylib.Неопределенные символы для архитектуры при использовании dylib C++

Я создаю dylib для с ++ в Xcode Я дал каталог установки @rpath это мой C++ код

Add.hpp:

#define EXPORT __attribute__((visibility("default"))) 
class Add 
{ 
public: 
    EXPORT void HelloWorld(const char *); 
    EXPORT int AddTwo(int a,int b); 
}; 

Add.cpp:

void Add::HelloWorld(const char * s) 
{ 
    AddPriv *theObj = new AddPriv; 
    theObj->HelloWorldPriv(s); 
    delete theObj; 
}; 
int Add::AddTwo(int a, int b) 
{ 
    return a+b; 
} 

После создания dylib в другом проекте, используя Копировать файлы в фазах сборки, скопировав его в Framework, я могу видеть его в Sample.App/Contents/Frameworks/Mylib.dylib. В настройках сборки Пути поиска путей запуска установлен в @executable_path/../Frameworks. Я добавил заголовок в корневую папку, указанную Пути поиска заголовков$(SRCROOT).

Ошибки я получаю:

Undefined symbols for architecture x86_64: 
    "Add::AddTwo(int, int)", referenced from: 
     -[ViewController viewDidLoad] in ViewController.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Edit:

$ nm -gU ****/AddTest.app/Contents/Frameworks/libAdd.dylib 
0000000000001170 T __ZN3Add10HelloWorldEPKc 
0000000000001220 T __ZN3Add6AddTwoEii 

смог увидеть Symboles в Lib и otool выходе:

$ otool -L libAdd.dylib 
    @rpath/libAdd.dylib (compatibility version 1.0.0, current version 1.0.0) 
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1) 

ответ

0

решена путем добавления библиотеки к Link Binary с библиотеками в фазах сборки