小编Bea*_*ins的帖子

通过命令行编译和链接 Swift/Objective-C++ 应用程序

将 C++ 组件添加到通过命令行编译和运行的 Swift 应用程序后,我现在需要编译 C++ 和 Objective-C++ (*.mm) 文件并将它们与 Swift 应用程序链接。

生成文件:

all: foo-renderer

clean:
  rm -f foo-renderer cpp.o objc.o

cpp.o: FooRenderer/FooRenderer/FooLibrary.cpp
  clang++ -c -o $@ $^

objc.o: cpp.o FooRenderer/FooRenderer/FooLibraryWrapper.mm
  clang++ -c -framework Foundation -o $@ $^

foo-renderer: objc.o FooRenderer/FooRenderer/*.swift
  xcrun -sdk macosx swiftc -import-objc-header FooRenderer/FooRenderer/FooRenderer-Bridging-Header.h -o $@ $^
Run Code Online (Sandbox Code Playgroud)

编译器失败并出现以下错误:

ld: warning: object file (objc.o) was built for newer OSX version (10.12) than being linked (10.9)
Undefined symbols for architecture x86_64:
  "__ZN11FooLibrary23printifyERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE", referenced from:
      -[FooLibraryWrapper printify:] in objc.o
  "__ZN11FooLibrary8optimizeERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE", …
Run Code Online (Sandbox Code Playgroud)

c++ objective-c clang objective-c++ swift

5
推荐指数
1
解决办法
1322
查看次数

标签 统计

c++ ×1

clang ×1

objective-c ×1

objective-c++ ×1

swift ×1