gpt4 book ai didi

c - extern“C”在msvc++ 9.0中无效

转载 作者:行者123 更新时间:2023-12-04 10:36:34 25 4
gpt4 key购买 nike

我为两个编译器管理JNI项目:MSVC ++ 8.0和9.0,
我的cpp文件包含以下实现:
extern“ C” {
JNIEXPORT jlong​​ JNICALL Java_context_ServiceProviderContext_StartServiceProvider
(JNIEnv * env,jclass,jstring jspath){
.....
}

借助Depends.exe实用程序,我可以看到MSVC 8.0成功地按预期导出了功能:Java_context_ServiceProviderContext_StartServiceProvider
但是在MSVC 9.0下进行编译会让我发疯,它的输出就像完全忽略外部“ C”一样。 Depends.exe向我显示:_Java_context_ServiceProviderContext_StartServiceProvider @ 12

有人知道9.0项目中究竟是什么导致此行为的吗?

最佳答案

JNICALL可能是#define JNICALL __stdcall。更改调用约定将修复名称修饰,但它将可怕地(包括无声地)破坏JNI,因为它将调用假定__stdcall的函数并得到其他东西。

它实际上不起作用吗?从我能用谷歌搜索的东西看来,JVM知道如何正确装饰函数名称。

关于c - extern“C”在msvc++ 9.0中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2464179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com