在Kotlin/Native的cinterop文档中,您必须定义一个.def文件,如下所示:
language = Objective-C
modules = FirebaseCore
compilerOpts = -framework FirebaseCore
linkerOpts = -framework FirebaseCore现在,您还可以在cinterop块中指定一个compilerOpts,例如:
compilations["main"].cinterops {
firebasecore {
packageName 'cocoapods.FirebaseCore'
defFile = file("$projectDir/src/iosMain/c_interop/FirebaseCore.def")
includeDirs ("$projectDir/../iosApp/Pods/FirebaseCore/Firebase/Core/Public")
compilerOpts ("-F$projectDir/src/iosMain/c_interop/modules/FirebaseCore-${versions.firebaseCoreIos}")
}
}我在这里只举了Kevin Galligan的例子:KMPFirestore。
我真的搞不懂gradle中的compilerOpts和.def文件中的compilerOpts有什么不同?
我没有很强的C语言背景,我只是想学习Kotlin Multiplatform (现在只是想了解如何与c或objectiveC库进行互操作),但是我不能正确地设置它们。
我真的很感激一些帮助,因为我甚至不完全了解.def文件是如何工作的。
任何与理解这些东西相关的阅读材料都会有很大的帮助。
发布于 2020-01-10 00:31:12
在生成互操作时,两个compilerOpts将被合并。遗憾的是,linkerOpts不能以这种方式工作。但是为了使互操作正确工作和链接,我还必须在.def文件中为linkerOpts指定框架的绝对路径。
https://stackoverflow.com/questions/59643362
复制相似问题