Я пытаюсь создать статическую библиотеку в xcode и ссылку на эту статическую библиотеку из другой программы.Создание и использование статического lib в xcode
Так как тест я создал статический проект библиотеки C BSD и просто добавил следующий код:
//Test.h
int testFunction();
//Test.cpp
#include "Test.h"
int testFunction() {
return 12;
}
Это компилируется и создает файл .a (libTest.a).
Теперь я хочу, чтобы использовать его в другой программе, поэтому я создаю новый Xcode проекта (приложение какао) следующий код:
//main.cpp
#include <iostream>
#include "Testlib.h"
int main (int argc, char * const argv[]) {
// insert code here...
std::cout << "Result:\n" <<testFunction();
return 0;
}
// Testlib. ч
extern int testFunction();
я право нажал на проекте -> добавить -> существующие рамки -> добавить другие Выбранный файл .a и добавили его в про ject.
Я всегда получаю эту ошибку компоновщика:
Build TestUselibrary of project TestUselibrary with configuration Debug
Ld build/Debug/TestUselibrary normal x86_64
cd /Users/myname/location/TestUselibrary
setenv MACOSX_DEPLOYMENT_TARGET 10.6
/Developer/usr/bin/g++-4.2 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk
-L/Users/myname/location/TestUselibrary/build/Debug
-L/Users/myname/location/TestUselibrary/../Test/build/Debug
-F/Users/myname/location/TestUselibrary/build/Debug
-filelist /Users/myname/location/TestUselibrary/build/TestUselibrary.build/Debug/TestUselibrary.build/Objects-normal/x86_64/TestUselibrary.LinkFileList
-mmacosx-version-min=10.6 -lTest -o /Users/myname/location/TestUselibrary/build/Debug/TestUselibrary
Undefined symbols:
"testFunction()", referenced from:
_main in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Я новичок в MacOSX развития и достаточно новый для C++. Я, вероятно, пропустил что-то довольно очевидное, весь мой опыт связан с созданием dll на платформе Windows. Я очень ценю любую помощь.
Ему не нужно это делать, так как библиотека и тестовый жгут являются .cpp. –
Правильно, я перепробовал, что его 'Test.cpp' - уточнили. –
Да, ваше право Я назвал его Test.c вместо Test.cpp, извините, не понял, что совершил такую глупую ошибку. –