C++ 使用C+;编译Xcode Swift项目时出错+;在构建阶段链接的库

C++ 使用C+;编译Xcode Swift项目时出错+;在构建阶段链接的库,c++,swift,xcode,g++,objective-c-swift-bridge,C++,Swift,Xcode,G++,Objective C Swift Bridge,我在网上搜索了很多,但没有找到解决问题的方法。 我的目标是在C++中创建一个简单的类,并在SWIFT上使用它。为此,我遵循本教程->(非常好)。 基本上,我遵循了以下步骤: 创建junk.cpp和junk.h文件 使用g++或/和clang++ 创建一个文件:$ar r libjunkcpp.a junk.o 链接到构建阶段->将二进制文件链接到库->添加中的Xcode 因此,当我执行此操作时,Xcode不会编译更多我的项目,在Xcode的左侧会显示错误消息: 链接器命令失败,退出代码为1(使用

我在网上搜索了很多,但没有找到解决问题的方法。 我的目标是在C++中创建一个简单的类,并在SWIFT上使用它。为此,我遵循本教程->(非常好)。 基本上,我遵循了以下步骤:

  • 创建
    junk.cpp
    junk.h
    文件
  • 使用
    g++或/和clang++
  • 创建一个文件:
    $ar r libjunkcpp.a junk.o
  • 链接到
    构建阶段->将二进制文件链接到库->添加中的Xcode
  • 因此,当我执行此操作时,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
    
    因此,我认为架构目标是正确的

    我认为这张图片可以帮助:

    注意:
    当我从带有库的链接二进制文件中删除
    .a
    文件时,代码编译得很好。

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

    $ ranlib libjunkcpp.a
    

    ranlib
    命令必须始终配对。

    您错过的是对命令的调用,以生成目录:

    $ ranlib libjunkcpp.a
    

    ranlib
    命令必须始终配对。

    在同一教程结束时遇到类似问题

    但我在构建项目时遇到的错误是:

    ld: library not found for -ljunkcpp
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    不知道“ljunkcpp”命名(vs“libjunkcpp”)突然从何而来,但我所做的是:

  • 删除了libjunkcpp.a
  • 再次使用
    g++-c junk.cpp
    编译
  • 再次运行
    ar r hellocpp.a junk.o
    (注意不同的
    hellocpp.a
    文件名)
  • 删除了到
    libjunkcpp.a
    的旧构建阶段链接
  • 链接
    hellocpp.a
    ,改为将二进制文件链接到库中。重建并运行

  • 一定是名字冲突。希望这对其他人有所帮助。

    在同一教程结束时遇到了类似的问题

    但我在构建项目时遇到的错误是:

    ld: library not found for -ljunkcpp
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    不知道“ljunkcpp”命名(vs“libjunkcpp”)突然从何而来,但我所做的是:

  • 删除了libjunkcpp.a
  • 再次使用
    g++-c junk.cpp
    编译
  • 再次运行
    ar r hellocpp.a junk.o
    (注意不同的
    hellocpp.a
    文件名)
  • 删除了到
    libjunkcpp.a
    的旧构建阶段链接
  • 链接
    hellocpp.a
    ,改为将二进制文件链接到库中。重建并运行

  • 一定是名字冲突。希望这对其他人有所帮助。

    此返回警告消息:
    警告:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib:warning for library:libjunkcpp.a目录为空(库中没有对象文件成员定义全局符号)
    。另一个错误发生在my.h文件上:@Augusto用于新错误(这与您询问的问题无关)请参阅,我将提出另一个问题。此返回警告消息:
    警告:/Applications/Xcode.app/Contents/Developer/toolschains/Xcode default.xctoolschain/usr/bin/ranlib:warning for libjunkcpp.a目录为空(库中没有对象文件成员定义全局符号)
    。另一个错误发生在我的.h文件上:@Augusto对于新的错误(与您所问的问题无关),请看,我将提出另一个问题。