我正在嘗試在xcode中創建一個靜態庫,並從另一個程序鏈接到該靜態庫。在xcode中創建和使用靜態庫
所以,作爲一個測試,我創建了一個BSD靜態C庫項目和剛添加以下代碼:
//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。^h
extern int testFunction();
我對上項目的點擊 - >添加 - >現有框架 - >添加其他 選擇了某文件並把它添加入親項目視圖。
我總是得到這個連接錯誤:
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++。我可能錯過了相當明顯的東西,我所有的經驗都來自在Windows平臺上創建dll。 我真的很感激任何幫助。
他不應該這樣做,因爲庫和測試工具都是.cpp。 – 2010-03-28 18:35:25
對,我重讀了它的'Test.cpp' - 澄清了。 – 2010-03-28 19:03:18
是的你的權利我把它稱爲Test.c而不是Test.cpp,對不起沒有意識到我犯了這樣一個愚蠢的錯誤。 – 2010-03-28 19:16:19