JNA在64位操作系统上使用32位JVM

时间:2012-05-04 16:37:49

标签: java windows-7 32bit-64bit jna

我想使用我开发的专有库(DLL)升级设备。该库可以使用MFC应用程序正常工作。但是,这里的转折是我们必须在浏览器中使其工作

我的想法是使用applet,然后调用本机DLL来完成这项工作。我的测试Java应用程序一切正常。然后我尝试使用applet,然后没有任何效果。

我已将问题缩小到32位VS 64位JVM。让我解释一下:我正在使用的Eclipse IDE使用 64位JVM ,因为我在 Windows 7 64位。但是,浏览器使用 32位JVM ,但不起作用。

两者之间的差异是传递给我的函数的参数。以下是DLL公开的函数的一些示例:

bool UPGRADELIB_API Connect( const char* serverAddress, unsigned short serverPort );
bool UPGRADELIB_API Upgrade( const char* pFilePath );

分别在Java中匹配:

boolean Icon_ConnectClientNode( String serverAddress, int serverPort );
boolean Icon_Upgrade( String pFilePath );

我的Java测试GUI将IP地址传递给本机lib “192.168.x.x”,端口传递 50005 。在 64bit 中,一切都很好,正如我之前所说的那样。在 32bit 中,如果我在C中打印serverAddress和serverPort,则显示

  

(空):62384

如您所见,即使端口未正确传递。

我已经待了一个星期了,我从头上拉了很多头发,我不会很快...请帮助我!

1 个答案:

答案 0 :(得分:0)

发现错误:传递了一个long并且Java long与32位和64位的C / C ++长度不同。

傻傻的我。