Xcode链接器错误:ld:库没有找到-twsapi

Xcode linker error: ld: library not found for -twsapi

本文关键字:-twsapi ld 链接 错误 Xcode      更新时间:2023-10-16

我已经使用Makefile编译并安装了i386架构的库。库位于/usr/local/lib/twsapi,头位于/usr/local/include/twsapi

在另一个项目中使用该库,我在Build Settings> Link Binary With Libraries下添加了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

没有找到库。你关于"首先确实找到了库"的论点是错误的,因为链接器从来没有列出未定义的符号——它在无法找到所有指定的库时就停止了。

你的问题在于链接器的这些参数指定了额外的路径来搜索库:

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

请注意,您指定的链接路径是/usr/local/include,而不是/usr/local/lib,这是您的库所在的位置。

你需要将/usr/local/lib添加到Xcode中的库搜索路径中进行链接。头搜索路径用于编译。从日志中可以看出,您在两个条目中都有条目,但是Library Search Paths条目不正确。