我正在从mingw32升级到mingw64,我在链接程序时遇到问题。链接器选项-lhid似乎无法按预期工作。我正在使用带有Win8操作系统的VM。
代码段:
#include <windows.h>
#include <hidsdi.h>
int main(int argc, char * argv[])
{
GUID guidHID;
HidD_GetHidGuid(&guidHID);
return 0;
}
控制台输出:
C:\Users\[...]>where g++
C:\mingw-w64-7.3.0\i686-7.3.0-posix-dwarf-rt_v5-rev0\mingw32\bin\g++.exe
C:\Users\[...]>g++ test.cc -lhid
C:\Users\[...]\AppData\Local\Temp\ccax2hjg.o:test.cc:(.text+0x1d): undefined reference to `HidD_GetHidGuid(_GUID*)@4'
collect2.exe: error: ld returned 1 exit status
C:\Users\[...]>g++ test.cc
C:\Users\[...]\AppData\Local\Temp\ccax2hjg.o:test.cc:(.text+0x1d): undefined reference to `HidD_GetHidGuid(_GUID*)@4'
如果我在旧的mingw32安装中使用g ++,这样可以正常工作。 需要注意的一点是,如果我省略旧安装的-lhid,则链接器会抱怨所述函数的impl版本。老明星的控制台输出:
C:\Users\[...]\Documents>where g++
C:\MinGW\bin\g++.exe
C:\Users\[...]\Documents>g++ test.cc
C:\Users\[...]\AppData\Local\Temp\cc0HcYlz.o:test.cc:(.text+0x1d): undefined reference to `_imp__HidD_GetHidGuid@4'
collect2: ld returned 1 exit status
C:\Users\[...]\Documents>g++ test.cc -lhid
C:\Users\[...]\Documents>