如何为32位和64位计算机分发依赖于DLL的应用程序

时间:2013-07-26 18:02:23

标签: java ant desktop-application native-code

我有一个使用第三方jar(utils.jar)的应用程序,它调用第三方DLL(utils.dll)。 jar文件管理对DLL的调用,包括DLL的名称。有一个32位版本和64位版本的DLL。

目前,该应用程序只能在32位计算机上运行。当我尝试在64位计算机上运行它时,它会告诉我

Can't load IA 32-bit .dll on a AMD 64-bit platform

当我用64位替换32位dll时,它工作正常。如果可以避免它,我不想维护两个单独的版本(一个使用32位库,另一个使用64位库)。有没有办法构建应用程序,以便它可以确定需要使用哪个版本的库?

我们的项目是使用Ant构建的,但我可以在必要时探索其他替代方案。

3 个答案:

答案 0 :(得分:2)

您必须创建一个额外的ant目标,以便它始终构建应用程序的x32和x64变体。

  

我不想保留两个单独的版本

如果蚂蚁你的skript总是产生两个额外的努力。

答案 1 :(得分:1)

当你执行loadLibary时,可以使用System.getProperty("os.arch")编写库名。因此,您捆绑所有dll,并在运行时选择相关版本。

答案 2 :(得分:1)

对于部署Java桌面应用程序,最好的选择通常是安装应用程序。使用Java Web Start 1 。 JWS适用于Windows,OS X& * nix中。

  1.   

    JWS提供了许多吸引人的功能,包括但不限于启动屏幕,桌面集成,文件关联,自动更新(包括延迟下载和程序控制更新),本地分区和&按平台,架构或Java版本下载其他资源,运行时环境配置(最低J2SE版本,运行时选项,RAM等),使用扩展轻松管理公共资源..