C++ 使用Windows函数SendMessage会导致与MSVC的链接错误,但不会导致与MinGW的链接错误

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

我正在我的一个函数中使用Windows函数SendMessage

如果我用MinGW编译,一切都很好

如果我用MSVC2013编译,我会得到这个链接错误

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文件。