C++ 使用Windows函数SendMessage会导致与MSVC的链接错误,但不会导致与MinGW的链接错误
我正在我的一个函数中使用Windows函数SendMessage 如果我用MinGW编译,一切都很好 如果我用MSVC2013编译,我会得到这个链接错误C++ 使用Windows函数SendMessage会导致与MSVC的链接错误,但不会导致与MinGW的链接错误,c++,qt,winapi,visual-c++,C++,Qt,Winapi,Visual C++,我正在我的一个函数中使用Windows函数SendMessage 如果我用MinGW编译,一切都很好 如果我用MSVC2013编译,我会得到这个链接错误 myClass.obj:-1: error: LNK2019: unresolved external symbol __imp__SendMessageW@16 referenced in function "private: virtual void __thiscall ... 为什么? < P> VisualC++只默认链接 Keln
myClass.obj:-1: error: LNK2019: unresolved external symbol __imp__SendMessageW@16 referenced in function "private: virtual void __thiscall ...
为什么?
< P> VisualC++只默认链接<代码> Kelnel.DLL< /C> >。 g++在许多其他DLL(Windows API子库)中添加了链接。具体是什么取决于选项 MinGW g++4.9.1 Nuwen发行版的specs
文件中的相关行:
%{pg:-lgmon} %{pthread:-lpthread} %{!no-pthread: } %{mwindows:-lgdi32 -lcomdlg32} -ladvapi32 -lshell32 -luser32 -lkernel32
%{pg:-lgmon}%{pthread:-lpthread}%{!无pthread:}%{mwindows:-lgdi32-lcomdlg32}-ladvapi32-lshell32-luser32-lkernel32
您可以这样做:
#ifdef _MSC_VER
#pragma comment(lib, "user32.lib")
#endif
mingw隐式链接了一些lib,您需要自己在msvcHmm中进行lib。。。好的,哪一个可能是?@avb在Visual Studio的内置帮助中查找
SendMessage
,您会发现。包括第页提到的库。“user32.dll”
是一个dll,而不是导入库。导入库是“user32.lib”。或者,您可以完全省略文件扩展名,只需使用#pragma comment(lib,“user32”)
。哦,对不起,为.dll键入了.lib。当然,由于Alf的编辑,linker指令应该接受.lib文件。