2012-08-31 75 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