1

在过去的两天里,我一直试图让它工作,但不能。也许有人可以帮助我。让我先解释一下我的设置;

视窗 7 64 位

nidaqmx 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 位的,所以我不知道这个错误来自哪里。

任何帮助将不胜感激。

4

1 回答 1

0

../../x86_64-w64-mingw32/bin/ld.exe:输入文件`../../Createdef/libnidaq.a(dyyrh.o)'的i386架构与i386:x86-64输出不兼容

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

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

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

objdump -t dyyrh.o 

objdump -t libnidaq.a
于 2012-12-25T05:51:07.293 回答