【发布时间】:2017-06-13 03:50:16
【问题描述】:
我之前没有任何使用 swift 的经验。
我有一个静态库 libseriallib.a,它是用 C++ 编写的,但有一个使用 extern C 的 C 包装器接口。
我想把这个库链接到一个 swift iOS 应用程序中。我正在从头开始创建这个应用程序。
libseriallib.a 依赖于三个库。它们是:libz.a, 'libcrypto.a,libssh.a`。
我遵循here(使用模块)提到的第二种方法并尝试构建项目。但是,我很困惑如何链接三个依赖项并成功构建它。现在我只在 XCode Build Phases->Link Binary With Libraries 部分添加了libseriallib.a。
我现在遇到的错误如下所示:
Apple Mach-O Linker Warning Group
ld: warning: URGENT: building for iOS simulator, but linking in object file (/Users/duminda/dev/swiftlibtest/libseriallib.a(seriallib.cpp.o)) built for OSX. Note: This will be an error in the future.
ld: warning: object file (/Users/duminda/dev/swiftlibtest/libseriallib.a(seriallib.cpp.o)) was built for newer OSX version (10.11) than being linked (10.0)
ld: warning: URGENT: building for iOS simulator, but linking in object file (/Users/duminda/dev/swiftlibtest/libseriallib.a(mem_buffer.cpp.o)) built for OSX. Note: This will be an error in the future.
ld: warning: object file (/Users/duminda/dev/swiftlibtest/libseriallib.a(mem_buffer.cpp.o)) was built for newer OSX version (10.11) than being linked (10.0)
ld: warning: URGENT: building for iOS simulator, but linking in object file (/Users/duminda/dev/swiftlibtest/libseriallib.a(buffers.cpp.o)) built for OSX. Note: This will be an error in the future.
ld: warning: object file (/Users/duminda/dev/swiftlibtest/libseriallib.a(buffers.cpp.o)) was built for newer OSX version (10.11) than being linked (10.0)
ld: warning: URGENT: building for iOS simulator, but linking in object file (/Users/duminda/dev/swiftlibtest/libseriallib.a(packet_reader2.cpp.o)) built for OSX. Note: This will be an error in the future.
ld: warning: object file (/Users/duminda/dev/swiftlibtest/libseriallib.a(packet_reader2.cpp.o)) was built for newer OSX version (10.11) than being linked (10.0)
Apple Mach-O Linker Error Group
"std::runtime_error::what() const", referenced from:
"std::__1::__basic_string_common<true>::__throw_length_error() const", referenced from:
"std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
"std::__1::ios_base::getloc() const", referenced from:
"std::runtime_error::runtime_error(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
现在,看来我也必须链接libstd++。
是否有任何全面的资源来说明如何将 C/C++ 库与 swift iOS 应用程序链接?
任何帮助将不胜感激。
【问题讨论】:
标签: c swift linker static-libraries