从 c 调用 swift
Call swift from c
我看到有人使用来自 android 的 swift 代码,使用 @_cdecl swift 函数。我可以使用 swiftc -emit-object 编译为本机,但是当尝试 link 时,我无法让 linker 正常工作..
我正在尝试使用 g++ 或 clang(++) 来编译 link 原生 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 本机库的 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
感谢提示
我看到有人使用来自 android 的 swift 代码,使用 @_cdecl swift 函数。我可以使用 swiftc -emit-object 编译为本机,但是当尝试 link 时,我无法让 linker 正常工作..
我正在尝试使用 g++ 或 clang(++) 来编译 link 原生 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 本机库的 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
感谢提示