2012-08-31 49 views
1

我一直试图让这个工作在过去的2天,但不能。也许有人可以帮助我。让我先解释一下我的设置;mingw w64 labview构建错误

视窗7的64位

nidaqmx 9.1.7

mingw的64位

的Netbeans 7.1.2

我创建DEF文件(从C:\程序文件(x86)\ National Instruments \ Shared \ ExternalCompilerSupport \ C \ lib64 \ msvc \ nidaqmx.lib)。虽然def文件中没有@符号。这是对的吗?

然后我运行dlltool并创建了我在链接器中使用的libnidaq.a文件。

一切工作到那里。问题是,当我尝试建立我得到以下错误:

c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: i386 architecture of input file `../../Createdef/libnidaq.a(dyyrh.o)' is incompatible with i386:x86-64 output 
c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: i386 architecture of input file `../../Createdef/libnidaq.a(dyyrt.o)' is incompatible with i386:x86-64 output 
collect2.exe: error: ld returned 1 exit status 
make[2]: *** [dist/Debug/MinGW-Windows/libHelloWorldC.dll] Error 1 
make[1]: *** [.build-conf] Error 2 
make: *** [.build-impl] Error 2 

我敢肯定,一切都是64位的,所以我不知道这个错误的来源。

任何帮助将不胜感激。

回答

0

../../x86_64-w64-mingw32/bin/ld.exe: i386 architecture of input file `../../Createdef/libnidaq.a(dyyrh.o)' is incompatible with i386:x86-64 output

该消息表示您试图将32位库(i386)链接到64位可执行文件(x86-64)。由于您没有显示用于生成dyyrh.o和libnidaq.a的确切命令,因此无法告诉您做错了什么。

我会建议在生成这两个文件时检查传入的开关和选项。例如,如果您使用windres.exe,请确保使用-F x86-64。类似的,如果你使用dlltool.exe,还有一个类似的开关-m x86-64

您可以在生成的文件上使用objdump来检查其格式是否正确并与项目的其余部分保持一致。例如。

objdump -t dyyrh.o 

objdump -t libnidaq.a