我正在构建一个Swift命令行应用程序,它引用了/ usr / local / lib中的第三方库(netcdf)。我在项目中有一个桥接头,在进行适当的调用时,没有错误。因此,我非常有信心在桥接文件中找到了#include。
在Build Settings中,我已将/ usr / local / lib添加到Library Search Paths,将-lnetcdf添加到其他Linker Flags。
但是我发现链接失败了。具体来说,我看到了undefined symbols
消息。查看单击错误时显示的ld命令,我可以看到-L / usr / local / lib就在那里。但是-lnetcdf不是。
我还需要做什么才能让-l进入链接命令?
答案 0 :(得分:0)
经过三个小时的尝试解决这个问题后,我终于想到了这个问题。花了大约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