我在网上搜索了很多,但没有找到解决问题的办法。
我的目标是在C++中创建一个简单的类,并在SWIFT上使用它。为此,我遵循了本教程->http://www.swiftprogrammer.info/swift_call_cpp.html(非常好)。
基本上我遵循了以下步骤:
创建junk.cppjunk.h文件
使用g++ or/and clang++编译
创建.a文件:$ ar r libjunkcpp.a junk.o
链接到Xcode inBuild Phases -> Link Binary With Libraries -> Add
因此,当我这样做时,Xcode不会编译更多我的项目,在Xcode的左侧会显示错误消息:
链接命令失败,退出代码1(使用-V以查看调用)
日志上的错误信息是:
ld:存档没有目录文件
'/Users/augustosansoncadini/Documents/XcodeProjects/Ex_cpp_Swift_CmdLineTool/junk/libjunkcpp.a'
对于架构x86_64
我认为这需要编译到it架构,但是当我键入g++ -v时,结果是:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: x86_64-apple-darwin18.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

所以我得出结论,架构目标是正确的。
我认为这张图片可以帮助:
c++ - 使用在构建阶段链接的C++库编译Xcode Swift项目时出错-LMLPHP
注:
当我从Link Binary With Libraries中删除.a文件时,代码编译得很好。

最佳答案

您错过的是调用ranlib命令生成目录:

$ ranlib libjunkcpp.a

必须始终配对arranlib命令。

10-08 05:22