c++ - wxWidgets Visual Studio 2015 链接错误

标签 c++ visual-studio visual-studio-2015 wxwidgets

我正在尝试在 Windows 10 下使用 Visual Studio Community 2015 运行最小的 wxWidgets 示例。wxWidgets 版本是 3.1.0。

我已经使用以下命令编译了 wxWidgets:

nmake -f makefile.vc SHARED=1 UNICODE=1 MONOLITHIC=1 BUILD=release

通过上述命令编译wxWidgets成功。

minimal wxWidgets example编译良好,但我在 release 版本中收到以下链接错误(尚未尝试调试):

error LNK2001: unresolved external symbol "void (__cdecl* wxTheAssertHandler)(class wxString const &,int,class wxString const &,class wxString const &,class wxString const &)" (?wxTheAssertHandler@@3P6AXABVwxString@@H000@ZA)
1>Source.obj : error LNK2001: unresolved external symbol "class wxEventTypeTag<class wxCommandEvent> const wxEVT_MENU" (?wxEVT_MENU@@3V?$wxEventTypeTag@VwxCommandEvent@@@@B)
1>Source.obj : error LNK2001: unresolved external symbol "protected: static class wxAppConsole * (__cdecl* wxAppConsoleBase::ms_appInitFn)(void)" (?ms_appInitFn@wxAppConsoleBase@@1P6APAVwxAppConsole@@XZA)
1>Source.obj : error LNK2001: unresolved external symbol "char const * const wxFrameNameStr" (?wxFrameNameStr@@3QBDB)
1>Source.obj : error LNK2001: unresolved external symbol "protected: static class wxAppConsole * wxAppConsoleBase::ms_appInstance" (?ms_appInstance@wxAppConsoleBase@@1PAVwxAppConsole@@A)
1>Source.obj : error LNK2001: unresolved external symbol "class wxMBConv * wxConvLibcPtr" (?wxConvLibcPtr@@3PAVwxMBConv@@A)
1>Source.obj : error LNK2001: unresolved external symbol "char const * const wxLOG_COMPONENT" (?wxLOG_COMPONENT@@3PBDB)
1>Source.obj : error LNK2001: unresolved external symbol "public: static unsigned int const wxString::npos" (?npos@wxString@@2IB)
1>Source.obj : error LNK2001: unresolved external symbol "class wxSize const wxDefaultSize" (?wxDefaultSize@@3VwxSize@@B)
1>Source.obj : error LNK2001: unresolved external symbol "bool wxTrapInAssert" (?wxTrapInAssert@@3_NA)
1>Source.obj : error LNK2001: unresolved external symbol "wchar_t const * const wxEmptyString" (?wxEmptyString@@3PB_WB)
1>Source.obj : error LNK2001: unresolved external symbol "private: static bool wxLog::ms_doLog" (?ms_doLog@wxLog@@0_NA)
1>Source.obj : error LNK2001: unresolved external symbol "char const * const wxStatusLineNameStr" (?wxStatusLineNameStr@@3QBDB)
1>Source.obj : error LNK2001: unresolved external symbol "private: static unsigned long wxThread::ms_idMainThread" (?ms_idMainThread@wxThread@@0KA)
1>Source.obj : error LNK2001: unresolved external symbol "class wxPoint const wxDefaultPosition" (?wxDefaultPosition@@3VwxPoint@@B)

我有以下预处理器定义:WIN32;_UNICODE;__WXMSW__;UNICODE

整个链接器标志:/OUT:"C:\Users\gb\documents\visual studio 2015\Projects\wxWidgetsDeneme\Release\wxWidgetsDeneme.exe"/MANIFEST/LTCG:incremental/NXCOMPAT/PDB:"C:\Users\gb\documents\visual studio 2015\Projects\wxWidgetsDeneme\Release\wxWidgetsDeneme.pdb"/DYNAMICBASE "wxmsw31u.lib""wxmsw31u_gl.lib""wxexpat.lib""wxjpeg.lib""wxpng.lib"“wxscintilla.lib” “wxtiff.lib” “wxzlib.lib” “kernel32.lib” “user32.lib” “gdi32.lib” “winspool.lib” “comdlg32.lib” “advapi32.lib” “shell32.lib” "ole32.lib""oleaut32.lib""uuid.lib""odbc32.lib""odbccp32.lib"/MACHINE:X86/OPT:REF/SAFESEH/INCREMENTAL:NO/PGD:"C:\Users\gb\文档\visual studio 2015\Projects\wxWidgetsDeneme\Release\wxWidgetsDeneme.pgd"/SUBSYSTEM:WINDOWS/MANIFESTUAC:"level='asInvoker' uiAccess='false'"/ManifestFile:"Release\wxWidgetsDeneme.exe.intermediate.manifest"/OPT:ICF/ERRORREPORT:PROMPT/NOLOGO/LIBPATH:"C:\Users\gb\Downloads\wxWidgets-3.1.0\lib\vc_dll"/TLBID:1

任何想法将不胜感激。

最佳答案

没想到会这么简单:只是缺少一个预处理器定义:WXUSINGDLL

In the documentation它提到:WXUSINGDLL:If you're compiling using DLLs instead of a static build 并且因为我正在使用 nmake -f makefile.vc SHARED=1 ...

我现在很好奇:为什么 wxWidgets 使用 gcc 运行没有任何问题,即使预处理器定义中缺少 WXUSINGDLL

关于c++ - wxWidgets Visual Studio 2015 链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42036606/

相关文章:

c++ - 如何从邻接矩阵创建无向图?

c++ - 我在 VS2015 中处理代码时得到不同的输出。有什么解释吗?

c++ - 带有提升日志的 Visual 2015 链接错误

c# - Visual Studio : Find class I'm in

C++字符串长度问题

c++ - 具有 boost::shared_ptr 类型成员的 std::map 序列化失败

c++ - 如何在 Driver.c controlFunction 接收使用 DeviceIoControl 发送的数据? IOCTL,驱动程序

git - 我应该在版本控制中忽略哪些由 Visual Studio 2017 创建的文件?

visual-studio - 在Visual Studio xml编辑器中键入时,如何跳过右引号?

c - 项目中的Visual Studio 2017文件夹