我正在构建一个 Swift 命令行应用程序,它引用了/usr/local/lib 中的第三方库 (netcdf)。我在项目中有一个桥接头,在进行适当的调用时,没有错误。所以我非常有信心在桥接文件中找到#include。
在build设置中,我已将/usr/local/lib 添加到库搜索路径,并将 -lnetcdf 添加到其他链接器标志。
但是我看到链接失败。具体来说,我看到了一条 undefined symbols
消息。查看错误时显示的 ld 命令,我可以看到 -L/usr/local/lib 在那里。但是 -lnetcdf 不是。
我还需要做什么才能让 -l 进入链接命令?
最佳答案
在尝试解决这个问题三个小时后,我最终想到了“把它填满”,并花了大约 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: clean clean: rm -f *.o GSIP
关于c - Xcode 7.1 不从/usr/local/lib 库链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33840767/