gpt4 book ai didi

java - 64 位操作系统上具有 32 位 JVM 的 JNA

转载 作者:行者123 更新时间:2023-12-02 01:26:21 30 4
gpt4 key购买 nike

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

我的想法是使用一个小程序,然后调用 native 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 传递到此 native 库 “192.168.x.x” 作为 IP 地址,50005 作为端口。正如我之前所说,在 64 位 中,一切都很好。在32位中,如果我用C打印serverAddress和serverPort,它会显示

(null):62384

如您所见,连端口都没有正确传递。

我已经这样做了一个星期了,我从头上拔掉了很多头发,很快就没有了......请帮助我!

最佳答案

发现错误:传递一个 long,而 Java long 与 32 位和 64 位中的 C/C++ long 大小不同。

我真傻。

关于java - 64 位操作系统上具有 32 位 JVM 的 JNA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452833/

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