kotlin native cinterop add linkerOpts of source code



我将一个头文件及其源代码添加到我的 xcode 项目中。

例如,AddToo.h

@interface AddTool : NSObject

-(NSString*) test:(NSString*) string;
@end

以下是源代码

@implementation AddTool
-(NSString*) test:(NSString*) string {
return string;
}
@end

test.def

language=Objective-C
headers=AddTool.h
package=com.tomliu

当我运行 xcode 项目时,

发生错误

架构 arm64 的未定义符号: "_OBJC_CLASS_$_AddTool",引用自:

那么我应该先将AddTool构建为静态库并将其添加到.def文件中的链接器选择吗?

还有其他方法可以解决此问题吗?

我的 kotlin 版本是 1.3.72

谢谢

注意:这个答案复制了我在基于 YouTrack 的 Kotlin 问题跟踪器中对这个问题副本的回答(见这里(。
据我所知,不能让事情以这种方式进行。即使你可以使用cinterop工具将此.def文件作为输入,它也只会发出C库或Objective-C库/框架的绑定。这些绑定就像标头,它们不包含实际代码,它们应该指向目标文件或共享库。所以是的,编译静态库应该在这里有所帮助。

相关内容

最新更新