Ошибка сборки mingw w64 labview

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

виндовс 7 64бит

нидакмкс 9.1.7

мингв 64 бит

Нетбинс 7.1.2

Я создал файл def (из 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-битное, поэтому я не знаю, откуда эта ошибка.

Любая помощь будет принята с благодарностью.


person CPL    schedule 31.08.2012    source источник


Ответы (1)


../../x86_64-w64-mingw32/bin/ld.exe: архитектура i386 входного файла `../../Createdef/libnidaq.a(dyyrh.o)' несовместима с выводом i386:x86-64

Это сообщение означает, что вы пытаетесь связать 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
person greatwolf    schedule 25.12.2012