mamoe / mirai

高效率 QQ 机器人支持库
https://mirai.mamoe.net
GNU Affero General Public License v3.0
14.28k stars 2.53k forks source link

mirai-core native在Windows上生成的动态库Contact.sendMessage函数没有导出 #2166

Closed hl1282456555 closed 2 years ago

hl1282456555 commented 2 years ago

问题描述

根据mirai-core开发文档里描述,Group继承自Contact,通过Contact.sendMessage函数发送消息。

在生成的miraicore_api.h头文件中.kotlin.root.net.mamoe.mirai.contact.Contact和.kotlin.root.net.mamoe.mirai.contact.Group中都没有找到sendMessage函

复现

操作步骤: 1、拉取dev分支 2、运行Run Configurations/Build mirai-core libraries for host native

mirai-core 版本

dev

bot-protocol

ANDROID_PHONE

其他组件版本

jdk版本 : 18

系统日志

No response

网络日志

No response

补充信息

No response

Him188 commented 2 years ago

sendMessage 是挂起函数, Kotlin 目前未支持挂起函数的 C API 导出 (但是它支持 Objective-C 的, 而 mirai 未采用 Objective-C API 导出), 计划解决方案是由 KJBB 提供 runBlocking 包装 (类似于在 JVM 为 Java 做的工作), 然后未来再考虑提供某种异步包装

Him188 commented 2 years ago

现阶段只能用 Kotlin/Native 使用 mirai-core native

hl1282456555 commented 2 years ago

了解,多谢回复。

另外想请问一下mirai与QQ交互的消息的结构部分是在项目的哪个目录下,有没有可能参考mirai的实现自己实现一个native cpp的库

Him188 commented 2 years ago

mirai-core 就是实现. 抄 mirai 实现好的协议很容易, 但 mirai 的成熟不主要在于协议, 要做到 mirai 的生态以及稳定性需要付出很多. mirai 是完全开源的, 也快要有三岁了, 如果你对协议感兴趣, 考虑为 mirai 提交新增协议实现的 PR将会是一个不错的尝试.

hl1282456555 commented 2 years ago

mirai-core 就是实现. 抄 mirai 实现好的协议很容易, 但 mirai 的成熟不主要在于协议, 要做到 mirai 的生态以及稳定性需要付出很多. mirai 是完全开源的, 也快要有三岁了, 如果你对协议感兴趣, 考虑为 mirai 提交新增协议实现的 PR将会是一个不错的尝试.

非常感谢你的回复和建议,我对协议比较感兴趣,但是很可惜我对kotlin没有什么了解,就不去提交bug了。