Xcode:如何链接预编译的c ++库

时间:2011-11-16 16:22:41

标签: objective-c xcode4.2 objective-c++ xcodebuild

新手问题:

我在c ++中有一个小的测试类(TestLibMain.cpp),并将其编译为“libTestLib.dylib”,它位于包含TestLibMain.h文件的目录的“debug”子目录中。

如何使用我的Xcode项目中的dylib?我在代码中导入了TestLibMain.h,并在构建设置中设置了Header-search路径。这很好用。但现在链接器告诉我他找不到dylib(也不能找到他自己编译的“TestLibMain.cpp”文件......)。在Ecplise / CDT中创建的dylib有一个不同的名称:“libTestLib.dylib”。在Xcode中设置“库搜索路径”没有帮助......

这是我的错误消息:

Undefined symbols for architecture i386:
  "TestLibMain::TestLibMain()", referenced from:
      -[tbViewController viewWillAppear:] in tbViewController.o
  "TestLibMain::getNumber()", referenced from:
      -[tbViewController viewWillAppear:] in tbViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

问题:

  1. 是否可以在Xcode中链接为i386创建的dylib文件?我想在Eclipse中的项目中使用Xcode项目编译的libs(我想在Android NDK中重用...)
  2. 如何让Xcode找到dylib文件?
  3. 实际上dylib文件是要链接的正确文件吗? eclipse没有创建.a文件,而是.d和.o文件?

1 个答案:

答案 0 :(得分:3)

1.如果您将dylib用于iOS项目 - 这是不可能的,因为Apple不允许使用自定义动态库。您也不能使用使用NDK构建的库,即使它们属于相同的体系结构,因为它们具有不同的二进制格式(Mac OS和iOS使用Mach-O,Android使用ELF)。

2.转到目标首选项 - >构建阶段 - >按'+' - >添加其他

3.dylib是正确的文件,除非它不是iOS项目。