Java 如何删除“@8“;dll文件中的后缀

Java 如何删除“@8“;dll文件中的后缀,java,Java,我最近在学习JNI。我在Java文件中编写了一个本机方法,并在使用javah.exe编译Java文件后获得了头文件。然后我编写了一个.cpp文件,并用code::blocks将其编译成一个.dll文件。 我运行了Java程序,但出现错误: 因此,我使用dll导出查看器打开了.dll文件,发现函数名中有一个“@8”后缀。我认为这就是我的Java文件无法正常运行的原因。那么,有人知道如何删除函数名中的“@8”后缀吗 如果您使用GCC编译,只需提供--kill at,您的问题就会迎刃而解。对于MSV

我最近在学习JNI。我在Java文件中编写了一个本机方法,并在使用javah.exe编译Java文件后获得了头文件。然后我编写了一个.cpp文件,并用code::blocks将其编译成一个.dll文件。 我运行了Java程序,但出现错误:


因此,我使用dll导出查看器打开了.dll文件,发现函数名中有一个“@8”后缀。我认为这就是我的Java文件无法正常运行的原因。那么,有人知道如何删除函数名中的“@8”后缀吗

如果您使用GCC编译,只需提供
--kill at
,您的问题就会迎刃而解。对于MSVC,se.

为什么要破解自己的dll??检查是否在声明接口时出错,请向我们展示C++源代码。很可能,您的
sayHello
函数的调用约定有问题。它应该是类C(也称为
cdecl
),而不是类Pascal(也称为
stdcall
)。是的,我已经多次检查了Java代码、头文件和cpp文件。在询问之前,我搜索了许多有关此错误的信息,他们说是函数名导致了此错误,但没有给出解决方案。@RolandIllig我看到了您提供的链接,它完美地解决了我的问题。我现在正在研究这个问题的答案。非常感谢你!你为我的问题提供了另一个解决方案。非常感谢你!