首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法导出stdcall方法

无法导出stdcall方法
EN

Stack Overflow用户
提问于 2019-09-08 10:11:15
回答 1查看 519关注 0票数 1

我在写一些使用jni的代码。我的目标平台是Windows。因此,我的jni函数必须使用stdcall调用约定,但Rust只使用cdecl调用约定导出函数。

我使用MinGW(可能很重要)

我写了两个函数:

代码语言:javascript
复制
#[no_mangle]
pub unsafe extern "C" fn exported_cmethod(env: &JNIEnv, obj: jobject, path: jstring) {
    // Some jni staff
}

代码语言:javascript
复制
#[no_mangle]
pub unsafe extern "stdcall" fn exported_stdmethod(env: &JNIEnv, obj: jobject, path: jstring) {
    // Some jni staff
}

比我用垃圾箱看到的导出表还要多

代码语言:javascript
复制
dumpbin /exports acc_check.dll | findstr exported
2094  82D 000014A0 exported_cmethod = __ZN4core3fmt5Write10write_char17h774b1da469bdbfa3E

因此,您可以看到,Rust导出了C方法,但没有导出stdcall

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-09 12:38:34

所以我想出了如何解决这个问题。

我在MinGW中使用了,这是一个错误。我刚刚用microsoft下载了MSVC工具链,它解决了我的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57840984

复制
相关文章

相似问题

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