Antares
Antares
~~先记录一下,结束kt进程的时候触发sigsegv跟插件崩溃直接相关,如果所有插件都是正常的就不会出问题,插件崩过就稳定sigsegv,估计问题在onexit那loader线程,之后调试一下~~ 已经解决
~~目前发现插件加载失败时没有从内存中卸载掉, #119 的报错~~ 已经解决
以及,kt端可能需要考虑一下处理接收到的SIGINT(与ctrl+C输入等同)
建议先自己编译一份libloader解决燃眉之急。顺便想了解一下你的jdk路径在哪个位置,可能和我们做测试的时候和你的路径不太一样
https://github.com/Nambers/MiraiCP-devReleases/tree/main/dev 先试试这个?虽然感觉解决不了,大概率还是得自行编译一份。
https://github.com/Nambers/MiraiCP/blob/c960f5a86383c049bb7d80daaef2fff10fa8a1d7/cpp/src/libloader/PluginListImplements.cpp#L58 这个应该是插件的问题,为了安全性我们不会加载不符合格式的插件,如果四个符号测试没有通过libLoader会拒绝加载。你可以查找一些extern "C"的四个符号是否在MiraiCP.cpp里
> extern "C" { void FUNC_ENTRANCE(const LibLoader::LoaderApi::interface_funcs &); void FUNC_EVENT(std::string content); void FUNC_EXIT(); const MiraiCP::PluginConfig &PLUGIN_INFO(); } MiraiCP.hpp里,这四个符号对应的定义存在吗?
>  > > 自己编译了libLoader,没有了之前的报错,但是还是加载不了,MiraiCPPlugin.dll是template里编译的。 > > 我的jdk路径:C:\Program Files\Android\Jdk\microsoft_dist_openjdk_1.8.0.25 我注意到一个问题,一楼你发的插件路径和这个图里显示的路径不一致,是你后来修改了吗?如果不是的话可以先检查一下json,以及相对路径最好用".\\"开头,之前测试的时候发现Linux上相对路径不是"./"开头会找不到文件,不知道Windows会不会也有这个毛病
如果是这样的话就比较麻烦了,你可以把相关部分的源代码发一下吗,之后测试下编译? 或者你有兴趣的话可以先试试给libloader debug,下载[这个仓库](https://github.com/Antares0982/MiraiCP-debug-docs),执行 ``` python script/init.py "2.12.0-RC" ``` 生成一个cmake项目,或者直接自己配cmake。符号找不到确实有点费解,这四个符号是MiraiCP.cpp里自己定义的理论上应该不会找不着:(
我看到这个目录结构大概猜到是什么问题了……应该是MiraiCP.cpp没有加入编译。你先尝试下面两个解决方案之一: 1. 手动把MiraiCP.cpp文件加入vs项目的源文件 2. 把MiraiCP.cpp移动到你的 Sibilla/Sibilla 文件夹下面然后重新生成一次项目