gpt4 book ai didi

c++ - 从 c 调用 swift

转载 作者:太空宇宙 更新时间:2023-11-04 06:53:02 25 4
gpt4 key购买 nike

我看到有人使用来自 android 的 swift 代码,使用 @_cdecl swift 函数。我可以使用 swiftc -emit-object 编译为 native ,但是在尝试链接时,我无法让链接器正常工作..

我正在尝试使用 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

所以基本上我有两个问题,可以做到吗以及如何做到?约翰。

最佳答案

感谢 amine.ahd 的指针,我链接了 iphoneos 工具链位置而不是 mac osx 的。

下面的命令实际上编译并让我运行一个调用 swift native 库的 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

谢谢指点

关于c++ - 从 c 调用 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48499264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com