kotlin native cinterop 添加源码的linkerOpts

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 文件中的 linkerOpts 吗?

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

我的kotlin版本是1.3.72

谢谢

注意:此答案复制了我对位于 YouTrack-based Kotlin 问题跟踪器(参见 here)中此问题副本的回答。
据我所知,这样是不行的。即使您可以使用 cinterop 工具将此 .def 文件作为输入,它也只会发出 C 库或 Objective-C library/framework 的绑定。这些绑定类似于 headers,它们不包含实际代码,它们应该指向 object 文件或共享库。所以是的,编译静态库应该对这里有所帮助。