首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依赖于CoreLocation的Kotlin Native cinterop框架

依赖于CoreLocation的Kotlin Native cinterop框架
EN

Stack Overflow用户
提问于 2021-01-12 05:53:43
回答 1查看 221关注 0票数 0

我正在尝试为一个框架添加一个cinterop。

我的def文件看起来像这样

代码语言:javascript
复制
language = Objective-C
modules = ModuleName
linkerOpts = -framework ModuleName

它失败了,错误消息是找不到CLLocationManagerDelegate的协议声明

我尝试添加-framework CoreLocation作为编译器选项,但仍然找不到它。

如何为依赖于CoreLocation的框架创建协同操作

我注意到头文件中有

代码语言:javascript
复制
@class CLLocationManager;
@class CLLocation;
@class CLHeading;

但是没有CLLocationManagerDelegate的前言声明,但是我对Swift和Objective-C的了解还不够多,无法判断这是否是一个损坏的头文件。

我尝试手动添加转发声明,但得到了相同的错误消息。

我还从头文件中删除了对CoreLocation的所有引用,它转到了另一个部分,在那里它依赖于另一个框架中的类。该代码是必需的,并且无法删除。

头文件包括此框架和CoreLocation的导入,但它仍然找不到符号。没有关于导入的错误。

已尝试将-framework选项添加为编译器选项,但仍找不到符号。框架搜索路径有-F选项。

代码语言:javascript
复制
        val architecturePath = when(targetName) {
            "iosX64" -> "ios-x86_64-simulator"
            "iosArm64" -> "ios-arm64"
            else -> throw IllegalStateException("Unknown architecture, $targetName")
        }
        val mapboxCoreMaps = File(projectDir, "libs/MapboxCoreMaps.xcframework/$architecturePath").absolutePath
        val mapboxMaps = File(projectDir, "libs/MapboxMaps.xcframework/$architecturePath").absolutePath
        compilations {
            @Suppress("UNUSED_VARIABLE")
            val main by getting {
                cinterops {
                    val mapbox by creating {
                        defFile = File("$projectDir/libs/mapbox.def")
                        packageName("com.mapbox")
                        compilerOpts("-F$mapboxCoreMaps", "-F$mapboxMaps", "-framework", "MapboxCoreMaps")
                    }
                }
            }
        }

Mapbox.def

代码语言:javascript
复制
language = Objective-C
modules = MapboxMaps
linkerOpts = -framework MapboxCoreMaps -framework MapboxMaps
EN

回答 1

Stack Overflow用户

发布于 2021-01-26 16:00:26

我认为您需要在.def文件中添加depends部分。例如,看看CoreData框架是如何被定义为平台库的。我想说它应该看起来像是

代码语言:javascript
复制
depends =CoreLocation
language = Objective-C
modules = MapboxMaps

compilerOpts = -framework MapboxCoreMaps -framework MapboxMaps
linkerOpts = -framework MapboxCoreMaps -framework MapboxMaps
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65675071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档