3

我想使用我开发的专有库 (DLL) 升级设备。该库使用 MFC 应用程序运行良好。然而,这里的转折是我们必须在浏览器中进行这项工作。

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

我已将问题范围缩小到 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 传递给这个本地库“192.168.xx”作为 IP 地址和50005作为端口。正如我之前所说,在64bit中,一切都很好。32bit中,如果我在 C 中打印 serverAddress 和 serverPort ,它会显示

(空):62384

如您所见,即使是端口也没有正确传递。

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

4

1 回答 1

0

发现错误:正在传递一个 long 并且 Java long 的大小与 32 位和 64 位的 C/C++ long 的大小不同。

傻我。

于 2013-02-01T18:42:08.867 回答