我正在尝试实现this tutorial以及我想要包括的json11 C++库。

我对两者都遵循相同的过程,从以下位置下载了仓库:
https://github.com/libmx3/mx3,将它们添加到我项目的/ deps /文件夹中,并运行GYP来为这两个文件生成.xcodeproj文件。

然后,我创建一个C++项目,将这两个项目都添加到工作区中,并在Build Phases-> Link Binaries with library下添加库。

当我点击运行时,构建失败并显示ld: library not found for -ljson11
我尝试过重新生成它们并将它们添加到主xcodeproj中。并进入目标依赖关系。
我仔细检查了库项目,它们是相同的。我还添加了在库搜索路径中编译.a文件的文件夹,但这没有任何区别。如果我删除了json11依赖项,则该项目会编译,但我不明白为什么找到了sqlite3并不会引发任何错误,但是相同的json11项目将无法工作。

我可以在Debug-build文件夹中看到.a文件,如果我分别构建它们,则没有错误。

这是完整的构建日志

Ld /Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Products/Debug/DjinniTest normal x86_64
cd /Users/myuser/Documents/Dev/djinni_test/cpp_project
export MACOSX_DEPLOYMENT_TARGET=10.11
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
-arch x86_64
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
-L/Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Products/Debug
-L/Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Products/Debug/..
-F/Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Products/Debug
-filelist /Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Intermediates/DjinniTest.build/Debug/DjinniTest.build/Objects-normal/x86_64/DjinniTest.LinkFileList
-mmacosx-version-min=10.11
-stdlib=libc++
-ljson11
-lsqlite3
-Xlinker
-dependency_info
-Xlinker /Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Intermediates/DjinniTest.build/Debug/DjinniTest.build/Objects-normal/x86_64/DjinniTest_dependency_info.dat
-o /Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Products/Debug/DjinniTest

ld: library not found for
 -ljson11
clang: error: linker command failed with exit code 1 (use -v to see invocation)

编辑:,即使我将已编译的文件添加到项目中以使其变黑,它仍然会抱怨找不到ljson11库。库的编译方式可能有问题吗?

最佳答案

这两个库都发出警告,指出在受支持的平台中找不到“macosx”。当我将其添加到json11项目设置中时,编译了该构建,并且所有警告均消失了。

SQlite3仍然仅具有iOS(iphone,iphonesimulator),但编译良好。我不知道有什么区别。

07-26 03:22