Xcode链接器错误:ld:找不到-twsapi的库

时间:2014-06-17 15:26:28

标签: c++ xcode linker

我使用Makefile为i386架构编译并安装了一个库。该库位于/usr/local/lib/twsapi,标题位于/usr/local/include/twsapi

要在另一个项目中使用该库,我在Build Settings>下添加了libtwsapi.a。将二进制文件链接到库,并将/usr/local/include添加到HEADER_SEARCH_PATH变量。

即使我引用了库,构建过程也会在链接部分失败并显示错误消息ld: library not found for -twsapi。如果我删除了二进制库的链接,我会收到很多错误,例如Undefined symbols for architecture i386:,这是有道理的,因为在这种情况下它找不到库。这证实了图书馆确实是首先发现的。

任何想法是怎么回事?传递给链接器的参数如下所示:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ \
  -arch i386 \
  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk \
  -L/Users/morten/Library/Developer/Xcode/DerivedData/test_project-gwzyzroxzbyejngtpizlynumphvo/Build/Products/Debug \
  -L/usr/local/include \
  -L/usr/local/include/twsapi \
  -F/Users/morten/Library/Developer/Xcode/DerivedData/test_project-gwzyzroxzbyejngtpizlynumphvo/Build/Products/Debug \
  -F/usr/local/lib \
  -filelist /Users/morten/Library/Developer/Xcode/DerivedData/test_project-gwzyzroxzbyejngtpizlynumphvo/Build/Intermediates/test_project.build/Debug/test_project.build/Objects-normal/i386/test_project.LinkFileList \
  -mmacosx-version-min=10.9 \
  -stdlib=libc++ \
  -Xlinker \
  -dependency_info \
  -Xlinker /Users/morten/Library/Developer/Xcode/DerivedData/test_project-gwzyzroxzbyejngtpizlynumphvo/Build/Intermediates/test_project.build/Debug/test_project.build/Objects-normal/i386/test_project_dependency_info.dat \
  -o /Users/morten/Library/Developer/Xcode/DerivedData/test_project-gwzyzroxzbyejngtpizlynumphvo/Build/Products/Debug/test_project

1 个答案:

答案 0 :(得分:5)

找不到图书馆。你的论点"图书馆确实在第一时间被发现"是错误的,因为链接器永远不会到达列出未定义的符号 - 它无法找到所有指定的库时停止。

您的问题出现在链接器的这些参数中,这些参数指定了搜索库的其他路径:

-L/usr/local/include -L/usr/local/include/twsapi

请注意,您指定的是/ usr / local / include 的链接路径,而不是/ usr / local / lib 的链接路径。

您需要将/ usr / local / lib添加到Xcode中的库搜索路径以进行链接。标题搜索路径用于编译。从日志中可以看出,两者都有条目,但“库搜索路径”条目不正确。