java.lang.UnsatisfiedLinkError: RenderControl.dll: %1 is not a valid Win32 application
如果我重新编译,在C源代码中添加一个空白的main()方法,并删除-C标志,那么它将失败,并出现UnsatisfiedLinkError(无法在64位计算机上加载32位DLL)。
为什么Java调用一个没有main方法的DLL是无效的?这难道不会破坏DLL文件和JNI的全部意义吗?
更新
gcc -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -I "C:\Program Files\Java\jdk1.6.0_32\include" -I "C:\Program Files\Java\jdk1.6.0_32\include\win32" -shared *.c -o lib.dll
如果使用MinGW32编译器,则无法生成64位代码。这很可能是有意为之。我很快查到的其他人的类似问题似乎表明您正在尝试使用32位的本机二进制和64位的Java。
尝试用mingw-w64进行编译,看看这是否可以缓解问题。
还有一种可能是库不在库路径中,即使您给system.load
提供了完整路径,也找不到库,在这种情况下,您应该确保DLL位于本机库的正确位置。
问题内容: 我已经为Windows 64位从gomingw安装了Go 。但是,我找不到任何地方实际如何编译.go文件。这是直接从Go Wiki获得Windows支持链接的程序,但是所有教程都讨论了如何使用6g和gccgo等,而这些在我的Windows机器上都不起作用。实际上,我想做的是,将“ hello.go”放入src文件夹,转到src文件夹后,在命令提示符下运行命令“ 8g hello.go”
问题内容: 因此,标题中的问题是,我需要在32位Windows XP的系统上的Tomcat中运行我的服务器应用程序,我正在Eclipse的64位Windows 7上工作和编译。如何将其编译为32位,我需要做什么?我假设在64位计算机上编译它时,它不能在32位Windows上运行? 问题答案: Java不会构建32位或64位应用程序-字节码可在不同的位体系结构之间移植。 唯一的例外是您可能在代码中使
问题内容: 我有用32位汇编语言编写的程序…现在,我无法在64位OS上对其进行编译。在我们学校,它们是特定的,程序必须以32位版本编写。这是我的程序: 任何的想法?我尝试了很多方法来编译它。编译后输出错误: 输出: 问题答案: 首先将更改为并将符号更改为,然后使用链接目标文件,该文件将自动链接至该文件, 您需要这样做,因为AFAIK如果没有,就无法链接至libc。另外,在汇编时也应使用elf32而
问题内容: 是否有C宏或某种方式可以检查我的C程序在C编译时是编译为64位还是32位? 编译器:我需要检查的GCC操作系统:Unix / Linux 另外,在运行程序时如何检查操作系统是否支持64位? 问题答案: 由于您标记了此“ gcc”,请尝试
本文向大家介绍详解Hadoop2.7.2 编译64位源码,包括了详解Hadoop2.7.2 编译64位源码的使用技巧和注意事项,需要的朋友参考一下 一、环境准备 1.CentOS配置 最好是用新克隆的虚拟机 ,虚拟机内存设置大一点(我设置的4G),配置网络,主机名,关闭防火墙,关闭selinux 注意:采用root角色编译,减少文件夹权限出现问题 2.jar包准备(hadoop源码、JDK8、ma
我想通知您,其中一个雇主已经创建了一个基于java的程序,通过I2C通信与Raspberry PI。 他在C++中创建了一些端口方法(open,write,close),并使用JNI库与基于java的程序建立了一个桥,因此,在本例中,我们可以使用C++原生库(JNI)桥通过java与嵌入式卡进行通信。 在本例中,只要禁用C++JN️library命令,我的java(包括javafx)程序就可以在r