使用 Windows 函数 SendMessage 导致与 MSVC 的链接错误,但与 MinGW 的链接错误
Using Windows function SendMessage results in linking error with MSVC but not with MinGW
我正在我的一个函数中使用 Windows 函数 SendMessage。
如果我用 MinGW 编译一切都很好。
如果我使用 MSVC2013 编译,我会收到此链接错误
myClass.obj:-1: error: LNK2019: unresolved external symbol __imp__SendMessageW@16 referenced in function "private: virtual void __thiscall ...
这是为什么?
默认情况下,Visual C++ 仅链接 kernel32.dll
。
g++ 还链接到许多其他 DLL(Windows API 子库)。具体取决于选项。
MinGW g++ 4.9.1 的 Nuwen 发行版 specs
文件中的相关行:
%{pg:-lgmon} %{pthread:-lpthread} %{!no-pthread: } %{mwindows:-lgdi32 -lcomdlg32} -ladvapi32 -lshell32 -luser32 -lkernel32
你可以这样做:
#ifdef _MSC_VER
#pragma comment(lib, "user32.lib")
#endif
我正在我的一个函数中使用 Windows 函数 SendMessage。
如果我用 MinGW 编译一切都很好。
如果我使用 MSVC2013 编译,我会收到此链接错误
myClass.obj:-1: error: LNK2019: unresolved external symbol __imp__SendMessageW@16 referenced in function "private: virtual void __thiscall ...
这是为什么?
默认情况下,Visual C++ 仅链接 kernel32.dll
。
g++ 还链接到许多其他 DLL(Windows API 子库)。具体取决于选项。
MinGW g++ 4.9.1 的 Nuwen 发行版 specs
文件中的相关行:
%{pg:-lgmon} %{pthread:-lpthread} %{!no-pthread: } %{mwindows:-lgdi32 -lcomdlg32} -ladvapi32 -lshell32 -luser32 -lkernel32
你可以这样做:
#ifdef _MSC_VER
#pragma comment(lib, "user32.lib")
#endif