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 文件或共享库。所以是的,编译静态库应该对这里有所帮助。
我将一个头文件及其源添加到我的 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 文件或共享库。所以是的,编译静态库应该对这里有所帮助。