【问题标题】:Xcode 7.1 not linking from /usr/local/lib libraryXcode 7.1 未从 /usr/local/lib 库链接
【发布时间】:2015-11-21 07:16:25
【问题描述】:

我正在构建一个 Swift 命令行应用程序,它引用了 /usr/local/lib 中的第三方库 (netcdf)。我在项目中有一个桥接头,在进行适当的调用时,没有错误。所以我相当有信心在桥接文件中找到#include。

在构建设置中,我已将 /usr/local/lib 添加到库搜索路径并将 -lnetcdf 添加到其他链接器标志。

但是我看到链接失败。具体来说,我看到了undefined symbols 消息。查看单击错误时显示的 ld 命令,我可以看到 -L/usr/local/lib 在那里。但是 -lnetcdf 不是。

我还需要做什么才能让 -l 进入链接命令?

【问题讨论】:

    标签: c xcode swift


    【解决方案1】:

    在尝试解决这个问题三个小时后,我最终想到了“塞进去”,并花了大约 15 分钟编写了一个 Makefile。

    CLIBS=-lnetcdf SWFILES=main.swift NCUtil.swift SWIMPORT=-import-objc-header ../GSIP-Bridging-Header.h SWIFTLIB=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx SLIBS=-lSystem -lobjc GSIP:main.o NCUtil.o ld $^ -arch x86_64 -L $(SWIFTLIB) $(SLIBS) $(CLIBS) -rpath $(SWIFTLIB) -macosx_version_min 10.10 -no_objc_category_merging -o $@ %.o: %.swift swiftc -c $(SWFILES) -target x86_64-apple-darwin14.5.0 -I /usr/local/include -I /usr/include $(SWIMPORT) -module-name=GSIP .PHONY:干净 干净的: rm -f *.o GSIP

    【讨论】:

      【解决方案2】:

      实际上还有另一种解决方案。使用Finder菜单Go -> Go to Folder,进入dylib所在目录。然后从 Finder 中,将 dylib 拖放到您的项目中。使用参考而不是复制文件可能是一个明智的想法。

      这解决了我所有的链接错误!

      【讨论】:

        猜你喜欢
        • 2013-07-27
        • 1970-01-01
        • 2012-02-19
        • 1970-01-01
        • 2013-04-18
        • 2021-02-09
        • 2018-09-02
        • 2021-05-25
        • 1970-01-01
        相关资源
        最近更新 更多