繁体   English   中英

wxWidgets Visual Studio 2015链接错误

[英]wxWidgets Visual Studio 2015 Link Errors

我正在尝试在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的编译成功。

最小的wxWidgets示例可以很好地编译,但是我在发行版中收到以下链接错误(尚未尝试调试):

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\\documents\\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

在文档中它提到: WXUSINGDLL:如果您使用DLL而不是静态版本进行编译,并且由于我使用的是nmake -f makefile.vc SHARED=1 ...

我现在很好奇:为什么wxWidgets使用gcc可以WXUSINGDLL运行,即使预处理器定义中缺少WXUSINGDLL

wxWidgets分发随附的文件docs/msw/install.txt中说明了使用Visual Studio编译wxWidgets的方法。

简而言之,有两种方法:

  • a)从IDE使用提供的项目文件。
  • b)从命令行使用提供的makefile

对于b),它只是nmake / f makefile.vc,其中带有您想要的库类型的一些标志。 例如, nmake /f makefile.vc BUILD=release SHARED=1将构建可能由您的应用程序使用的多个.dll文件,并且它们将不包含任何调试符号。

您的编译命令缺少makefile.vc。 在此文件中,根据您的命令标志,是否定义了某些标志,例如WXUSINGDLL。

编译应用程序时,必须使用与用于wxWidgets编译的标志相同的标志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM