( __ printf __ ) 在 DLL (programfiles(x86)\codeblocks\mingw



我正在尝试学习用于跨平台GUI开发的wxwidgets,但是我遇到了一个问题。

当尝试使用 mingW32 构建 wxwidgets 时,我遇到了错误。我安装了带有代码块 32 的 minGW16.1(工作正常),将 PATH 添加到系统环境。从 wxwidgets.org 下载了所有可能性。当我尝试使用 mingw32 从 cmd 编译 wxwidgets 库时,他们都不想编译。我进入wxwidgets/build/msw,输入了几个版本,但要提到一个:

mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITIC=1 UNICODE=1

(尝试没有共享,单体,甚至调试模式)

关于错误:

( __ printf __ ) cannot be found in DLL
(programfiles(x86)codeblocksmingwbinas.exe)

我有exe,多次尝试从头开始重新安装所有内容。我正在使用 Windows 10。

gcc -c -o gcc_mswudllwxregex_regcomp.o  -O2 -mthreads  -DHAVE_W32API_H -DNDEBUG -I....include -I....libgcc_dllmswu -D__WXMSW__  -D_UNICODE   -MTgcc_mswudllwxregex_regcomp.o -MFgcc_mswudllwxregex_regcomp.o.d -MD -MP ../../src/regex/regcomp.c
makefile.gcc:5778: recipe for target 'gcc_mswudllwxregex_regcomp.o' failed
mingw32-make: *** [gcc_mswudllwxregex_regcomp.o] Error 1

更新:

重新安装并删除与此相关的所有内容后,问题已更改。我使用的代码,尝试没有标志,并且只有标志,但只有"-std=gnu++11":

mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release CXXFLAGS="-fno-keep-inline-dllexport -std=gnu++11"

新的错误代码:

gcc -c -o gcc_mswudllwxregex_regcomp.o  -O2 -mthreads  -DHAVE_W32API_H -DNDEBUG -I....include -I....libgcc_dllmswu -D__WXMSW__  -D_UNICODE   -MTgcc_mswudllwxregex_regcomp.o -MFgcc_mswudllwxregex_regcomp.o.d -MD -MP ../../src/regex/regcomp.c
gcc: error: CreateProcess: No such file or directory
makefile.gcc:5702: recipe for target 'gcc_mswudllwxregex_regcomp.o' failed
mingw32-make: *** [gcc_mswudllwxregex_regcomp.o] Error 1

关于我永远无法使用代码块内置编译器编译 wxwidget 这一事实的任何信息? 没有插件?

删除所有内容:wxWidgets,Code::Blocks和MinGW或TDM-GCC

*下载并安装C::B,无需MinGW或TDM
*从这里下载TDM-GCC。如果您同时安装32位和64位版本,我建议您将它们安装在两个不同的文件夹中。
*下载wx小部件

打开命令窗口。假设您在"C:\TDM32"处有TDM,在"C:\myWX"处有wxWidgets。
使用以下命令编译 wxWidgets:

PATH=%PATH%;C:TDM32bin
cd C:myWXbuildmsw
mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITIC=1 UNICODE=1

这应该使用大多数wxWidgets构建一个仅.dll文件。不是OpenGL。
如果您喜欢几个.dll请不要使用"Monolitic=1"
如果您不喜欢使用 wx'dll,而是使用添加到应用中的静态".a"文件,请不要使用"shared=1"
如果要在使用调试器时单步执行 wxWidgets 代码,请使用"BUILD=debug"
如果你想要OpenGL,请使用"USE_OPENGL=1"
要使用 C++11 构建 wxWidgets,请使用CXXFLAGS="-std=gnu++11"

对于您自己的应用程序,您必须告诉 C::B:
* 在哪里可以找到 TDM 编译器
* 可以找到 wxWidgets 标头的位置
* wxWidgets 库(.dll 或 .a,具体取决于您是否使用"共享"编译)

可以找到

最新更新