在Eclipse中使用MinGW 32位构建64位dll
我在64位Windows 7上安装了32位版本的Mingw 4.7.2(使用安装程序)。 在Eclipse C++项目中,我使用明文来构建.dll文件。到目前为止一切正常 然而,我使用这个.dll通过JNI包含在java项目中。当我在java项目中调用.dll函数时,异常在Eclipse中使用MinGW 32位构建64位dll,eclipse,dll,mingw,eclipse-cdt,Eclipse,Dll,Mingw,Eclipse Cdt,我在64位Windows 7上安装了32位版本的Mingw 4.7.2(使用安装程序)。 在Eclipse C++项目中,我使用明文来构建.dll文件。到目前为止一切正常 然而,我使用这个.dll通过JNI包含在java项目中。当我在java项目中调用.dll函数时,异常“线程中的异常”main“java.lang.unsatifiedlinkerror:D:\path\mylib.dll:无法在AMD 64位平台上加载IA 32位.dll” 被抛出。 看来我需要构建一个64位版本的DLL 因此
“线程中的异常”main“java.lang.unsatifiedlinkerror:D:\path\mylib.dll:无法在AMD 64位平台上加载IA 32位.dll”
被抛出。
看来我需要构建一个64位版本的DLL
因此,我的问题是:
“抱歉,未实现:64位模式未在”
中编译。”。
因此,有没有一种方法可以让64位模式在mingw32中运行。您可以设置
-m64
开关来编译64位库
在x86-64上,除上述开关外,还支持这些“-m”开关
64位环境中的处理器
-m32
-m64
-mx32
为32位或64位环境生成代码。-m32选项将int、long和指针类型设置为32位,并生成
在任何i386系统上运行
-m64选项将int设置为32位,将long和指针类型设置为64位,并为x86-64体系结构生成代码。达尔文
只有-m64选项还关闭-fno pic和-mdynamic no pic
选项
-mx32选项将int、long和指针类型设置为32位,并为x86-64体系结构生成代码
(来源:)
示例:
32位:gcc-m32-o exmaple32示例.c
64位:gcc-m64-o exmaple64-example.c
(与g++
相同)
您可以在eclipse中设置它们:
(右键单击项目)->Properties->C/C++Build->Settings
我最近遇到了同样的问题,安装MinGW-64
版本为我启用了-m64
标志。您可以从中获得自动构建
编辑:一些家伙(rubenvb
)在个人构建中做了一些出色的工作
:
还有GCC4.7.4甚至是4.8.0。您可以从Windows下载TDM-gcc编译器,安装非常简单 然后,您可以运行以下命令,从C代码源文件HelloWorld.C生成64位C代码对象文件
"C:\MinGW64\bin\gcc.exe" -m64 -c -I"C:\Program Files\Java\jdk1.6.0_26\include" -I"C:\Program Files\Java\jdk1.6.0_26\include\win32" HelloWorld.c
这应该从与HelloWorld.c相同的目录运行,并将在该目录中生成HelloWorld.o文件。
-m64
将其设为64位。您可以指定-m32
来生成32位对象文件,并指定-o
,以提供上述注释中提到的输出。感谢您的回复,我尝试过这样做,但当我想要构建时,我得到了错误:“对不起,未实现:64位模式未在中编译”。那么,有没有办法让64位模式在mingw32上运行呢?我明白了,但是您可以使用Mingw的64位fork:Mingw-w64。这是官方网站:。但是Golgauth已经发布了一个下载链接。同意,如果mingw不支持它,mingw-w64也可以+1为直接链接。