Call swift from c
Call swift from c
我看到有人使用来自 android 的 swift 代码,使用 swift 函数@_cdecl。我能够使用 swiftc -emit-object 编译为本机,但是当尝试链接时,我无法让链接器正常工作。
我正在尝试使用 g++ 或 clang(++( 来编译和链接原生 swift 对象,有人已经成功地做到了吗?
下面列出了我收到的错误:
Undefined symbols for architecture x86_64:
"__T0S2SBp21_builtinStringLiteral_Bw17utf8CodeUnitCountBi1_7isASCIItcfC", referenced from:
__T04main4testyyF in main.o
"__T0SSN", referenced from:
__T04main4testyyF in main.o
"__T0s27_allocateUninitializedArraySayxG_BptBwlFyp_Tgq5", referenced from:
__T04main4testyyF in main.o
"__T0s5printySayypGd_SS9separatorSS10terminatortF", referenced from:
__T04main4testyyF in main.o
"__T0s5printySayypGd_SS9separatorSS10terminatortFfA0_", referenced from:
__T04main4testyyF in main.o
"__T0s5printySayypGd_SS9separatorSS10terminatortFfA1_", referenced from:
__T04main4testyyF in main.o
"_swift_bridgeObjectRelease", referenced from:
__T04main4testyyF in main.o
"_swift_bridgeObjectRetain", referenced from:
__T04main4testyyF in main.o
所以基本上我有两个问题,可以做到吗,怎么做?John。
感谢amine.ahd的指针,我链接了iphoneos工具链的位置,而不是mac osx的位置。
以下命令实际上编译并让我运行一个调用 swift 本机库的 c 程序,即使有参数(c 端的 char*,swift 端的 UnsafePointer (。
clang -o m m.o -lshared -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx -L.
*-lshared 是使用以下命令编译的 libshared.so 库:
clang -shared -o libshared.so main.o -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx
请注意main.o,这是使用以下命令生成的:
swiftc main.swift -emit-object
感谢
相关文章:
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 在 swift 项目中使用 CPP 库
- 从 Swift 设置C++指针
- std::async from std::async in windows xp
- 将 std::vector<double> 从 C++ 包装到 C 以在 Swift 中使用
- 标头,包括在 Swift 项目中使用C++文件时的错误
- std::is_reference from std::any
- std::time_point from and to std::string
- "No suitable conversion function from 'std::string' to 'const char *' exists"
- std::chrono::time_point from std::string
- 如何实现从C++函数到 Swift 的回调
- Visual accept std::string from std::byte iterator
- C++中链表的错误"Abort signal from abort(3) (sigabrt) "
- 将 vector<dlib::p oint> 转换为 NSArray,以便将其传递给 Swift 类
- dopen():不以 root 身份运行时"failed to map segment from shared object"
- C++ 中的"template <typename From, typename Tag> struct Alias;"是什么?
- from std::vector to adept::avector
- qt get child (Callout) from QChart
- Access C++ Enum from Swift
- Call swift from c