无法将 wxWidgets 应用程序与代码::块/MinGW 链接

Can't link wxWidgets app with Code::Blocks / MinGW

本文关键字:MinGW 链接 代码 wxWidgets 应用程序      更新时间:2023-10-16

我有一个已经在Eclipse中构建的c++ + wxWidgets应用程序,其中wxWidgets使用MSYS构建。

现在我想尝试不同的IDE,如CodeLite和Code::Blocks,但是当我尝试它们时,它们不起作用,因为我缺少他们想要的构建.cfg文件。所以我尝试了一种"干净"的方式,备份了wxWidgets,并使用MinGW32-make而不是MSYS重新构建它们。

现在尝试代码:阻止,我收到很多"未定义的引用"错误,我无法理解我做了什么或设置错了什么。

我将尝试在此处提供所有相关信息:

wxWidgets 的路径:

C:SVILUPPOTOOLSwxWidgets

路径变量(相关部分)

PATH=C:SVILUPPOTOOLSMinGWbin;C:SVILUPPOTOOLSMinGWlibexecgccmingw324.8.1;

明武 v4.8.1,制作版本

C:SVILUPPOTOOLSwxWidgets>mingw32-make -v
GNU Make 3.82.90
Built for i686-pc-mingw32

wxWidgets build command:

C:SVILUPPOTOOLSwxWidgetsbuildmsw>mingw32-make -f makefile.gcc BUILD=debug UNICODE=1 SHARED=0 MONOLITHIC=1
代码::

块构建日志:

-------------- Build: Debug in MyProject (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DwxUSE_UNICODE -Wall -g -D__WXDEBUG__ -IC:SVILUPPOTOOLSwxWidgetslibgcc_libmswud -IC:SVILUPPOTOOLSwxWidgetsinclude -c C:SourceCodeblocksProgettiMyProjectMyProjectsrcCustomControlsTAntiAliasedGaugeTAntiAliasedGauge.cpp -o objDebugsrcCustomControlsTAntiAliasedGaugeTAntiAliasedGauge.o
mingw32-g++.exe -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DwxUSE_UNICODE -Wall -g -D__WXDEBUG__ -IC:SVILUPPOTOOLSwxWidgetslibgcc_libmswud -IC:SVILUPPOTOOLSwxWidgetsinclude -c C:SourceCodeblocksProgettiMyProjectMyProjectsrcfMainForm.cpp -o objDebugsrcfMainForm.o
mingw32-g++.exe -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DwxUSE_UNICODE -Wall -g -D__WXDEBUG__ -IC:SVILUPPOTOOLSwxWidgetslibgcc_libmswud -IC:SVILUPPOTOOLSwxWidgetsinclude -c C:SourceCodeblocksProgettiMyProjectMyProjectsrcGUI_MainForm.cpp -o objDebugsrcGUI_MainForm.o
mingw32-g++.exe -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DwxUSE_UNICODE -Wall -g -D__WXDEBUG__ -IC:SVILUPPOTOOLSwxWidgetslibgcc_libmswud -IC:SVILUPPOTOOLSwxWidgetsinclude -c C:SourceCodeblocksProgettiMyProjectMyProjectsrcMy_Project.cpp -o objDebugsrcMy_Project.o
mingw32-g++.exe -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DwxUSE_UNICODE -Wall -g -D__WXDEBUG__ -IC:SVILUPPOTOOLSwxWidgetslibgcc_libmswud -IC:SVILUPPOTOOLSwxWidgetsinclude -c C:SourceCodeblocksProgettiMyProjectMyProjectsrcProva_wxcrafter_bitmaps.cpp -o objDebugsrcProva_wxcrafter_bitmaps.o
mingw32-g++.exe -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DwxUSE_UNICODE -Wall -g -D__WXDEBUG__ -IC:SVILUPPOTOOLSwxWidgetslibgcc_libmswud -IC:SVILUPPOTOOLSwxWidgetsinclude -c C:SourceCodeblocksProgettiMyProjectMyProjectsrcUtilitiesUtilities.cpp -o objDebugsrcUtilitiesUtilities.o
C:SourceCodeblocksProgettiMyProjectMyProjectsrcUtilitiesUtilities.cpp: In function 'char HexToChar(char*)':
C:SourceCodeblocksProgettiMyProjectMyProjectsrcUtilitiesUtilities.cpp:73:66: warning: operation on 'HexString' may be undefined [-Wsequence-point]
  return (char)((AscHex(*HexString++) * 16) | AscHex(*HexString++));
                                                                  ^
C:SourceCodeblocksProgettiMyProjectMyProjectsrcUtilitiesUtilities.cpp: In function 'byte HexToByte(char*)':
C:SourceCodeblocksProgettiMyProjectMyProjectsrcUtilitiesUtilities.cpp:77:66: warning: operation on 'HexString' may be undefined [-Wsequence-point]
  return (byte)((AscHex(*HexString++) * 16) | AscHex(*HexString++));
                                                                  ^
mingw32-g++.exe -LC:SVILUPPOTOOLSwxWidgetslibgcc_lib -o binDebugMyProject.exe objDebugsrcCustomControlsTAntiAliasedGaugeTAntiAliasedGauge.o objDebugsrcfMainForm.o objDebugsrcGUI_MainForm.o objDebugsrcMy_Project.o objDebugsrcProva_wxcrafter_bitmaps.o objDebugsrcUtilitiesUtilities.o  -mthreads  -lwxmsw30ud -lwxpngd -lwxjpegd -lwxtiffd -lwxzlibd -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lcomctl32 -lwsock32 -lodbc32 -mwindows
C:SVILUPPOTOOLSwxWidgetslibgcc_lib/libwxmsw30ud.a(monolib_xml.o): In function `StartElementHnd':
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:637: undefined reference to `XML_GetCurrentLineNumber'
C:SVILUPPOTOOLSwxWidgetslibgcc_lib/libwxmsw30ud.a(monolib_xml.o): In function `TextHnd':
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:687: undefined reference to `XML_GetCurrentLineNumber'
C:SVILUPPOTOOLSwxWidgetslibgcc_lib/libwxmsw30ud.a(monolib_xml.o): In function `StartCdataHnd':
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:702: undefined reference to `XML_GetCurrentLineNumber'
C:SVILUPPOTOOLSwxWidgetslibgcc_lib/libwxmsw30ud.a(monolib_xml.o): In function `CommentHnd':
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:727: undefined reference to `XML_GetCurrentLineNumber'
C:SVILUPPOTOOLSwxWidgetslibgcc_lib/libwxmsw30ud.a(monolib_xml.o): In function `PIHnd':
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:742: undefined reference to `XML_GetCurrentLineNumber'
C:SVILUPPOTOOLSwxWidgetslibgcc_lib/libwxmsw30ud.a(monolib_xml.o): In function `ZN13wxXmlDocument4LoadER13wxInputStreamRK8wxStringi':
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:813: undefined reference to `XML_ParserCreate'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:826: undefined reference to `XML_SetUserData'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:827: undefined reference to `XML_SetElementHandler'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:828: undefined reference to `XML_SetCharacterDataHandler'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:829: undefined reference to `XML_SetCdataSectionHandler'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:830: undefined reference to `XML_SetCommentHandler'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:831: undefined reference to `XML_SetProcessingInstructionHandler'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:832: undefined reference to `XML_SetDefaultHandler'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:833: undefined reference to `XML_SetUnknownEncodingHandler'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:840: undefined reference to `XML_Parse'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:843: undefined reference to `XML_GetErrorCode'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:843: undefined reference to `XML_ErrorString'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:846: undefined reference to `XML_GetCurrentLineNumber'
C:SVILUPPOTOOLSwxWidgetsbuildmsw/../../src/xml/xml.cpp:865: undefined reference to `XML_ParserFree'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 29 second(s))
19 error(s), 2 warning(s) (0 minute(s), 29 second(s))

我还尝试在链接器设置中添加我在 arm-linux 下构建此代码时必须添加的其他库,但这些库文件不存在(我想是"导致 MONOLITHIC 选项"):

libwxmsw30ud_core.a
libwxmsw30ud_html.a
libwxmsw30ud_adv.a
libwxbase30ud_xml.a
libwxmsw30ud_richtext.a

最后,我不知道我应该怎么做才能最终从 Code::Block 链接和调试我的源代码。

您需要

与构建wxWidgets时创建的libwxexpat.a链接。