2012-08-31 6 views
1

Я пытался заставить это работать последние 2 дня, но не могу. Может, кто-то может мне помочь. Позвольте мне сначала объяснить мою установку;mingw w64 labview build error

Windows 7 64bit

nidaqmx 9.1.7

MinGW 64 бит

Netbeans 7.1.2

Я создал файл четкости (из C: \ Program Files (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