( __ printf __ ) 在 DLL (programfiles(x86)\codeblocks\mingw\bin\as.exe) 中找不到
( __ printf __ ) cannot be found in DLL (programfiles(x86)\codeblocks\mingw\bin\as.exe)
我正在尝试学习用于跨平台 GUI 开发的 wxwidgets,但是我遇到了一个问题。
当尝试使用 mingW32 构建 wxwidgets 时,我 运行 出错了。我用代码块 16.1 安装了 minGW32(工作正常),将 PATH 添加到系统环境。从 wxwidgets.org 下载所有可能性。当我尝试使用 mingw32 从 cmd 编译 wxwidgets 库时,None 他们想要编译。我进入 wxwidgets/build/msw
,输入了几个版本,但只提到一个:
mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITIC=1 UNICODE=1
(在没有共享、单体、甚至调试模式的情况下尝试过)
关于错误:
( __ printf __ ) cannot be found in DLL
(programfiles(x86)\codeblocks\mingw\bin\as.exe)
我有 exe,尝试从头开始重新安装好几次。我正在使用 Windows 10。
gcc -c -o gcc_mswudll\wxregex_regcomp.o -O2 -mthreads -DHAVE_W32API_H -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -D__WXMSW__ -D_UNICODE -MTgcc_mswudll\wxregex_regcomp.o -MFgcc_mswudll\wxregex_regcomp.o.d -MD -MP ../../src/regex/regcomp.c
makefile.gcc:5778: recipe for target 'gcc_mswudll\wxregex_regcomp.o' failed
mingw32-make: *** [gcc_mswudll\wxregex_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_mswudll\wxregex_regcomp.o -O2 -mthreads -DHAVE_W32API_H -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -D__WXMSW__ -D_UNICODE -MTgcc_mswudll\wxregex_regcomp.o -MFgcc_mswudll\wxregex_regcomp.o.d -MD -MP ../../src/regex/regcomp.c
gcc: error: CreateProcess: No such file or directory
makefile.gcc:5702: recipe for target 'gcc_mswudll\wxregex_regcomp.o' failed
mingw32-make: *** [gcc_mswudll\wxregex_regcomp.o] Error 1
有没有关于我无法使用 codeblocks 的内置编译器编译 wxwidget 的信息?没有插件?
删除所有内容:wxWidgets、Code::Blocks 和 MinGW 或 TDM-GCC
* 下载并安装 C::B, 没有 MinGW 或 TDM
* 从 here 下载 TDM-GCC。如果您同时安装 32 位和 64 位版本,我建议您将它们安装在两个不同的文件夹中。
* 下载wxWidgets
打开命令window。假设你有 "C:\TDM32" 的 TDM 和 "C:\myWX" 的 wxWidgets。
使用这些命令编译wxWidgets:
PATH=%PATH%;C:\TDM32\bin
cd C:\myWX\build\msw
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 headers
* 可以找到 wxWidgets 库(.dll 或 .a,取决于您是否使用 "shared" 编译)
我正在尝试学习用于跨平台 GUI 开发的 wxwidgets,但是我遇到了一个问题。
当尝试使用 mingW32 构建 wxwidgets 时,我 运行 出错了。我用代码块 16.1 安装了 minGW32(工作正常),将 PATH 添加到系统环境。从 wxwidgets.org 下载所有可能性。当我尝试使用 mingw32 从 cmd 编译 wxwidgets 库时,None 他们想要编译。我进入 wxwidgets/build/msw
,输入了几个版本,但只提到一个:
mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITIC=1 UNICODE=1
(在没有共享、单体、甚至调试模式的情况下尝试过)
关于错误:
( __ printf __ ) cannot be found in DLL
(programfiles(x86)\codeblocks\mingw\bin\as.exe)
我有 exe,尝试从头开始重新安装好几次。我正在使用 Windows 10。
gcc -c -o gcc_mswudll\wxregex_regcomp.o -O2 -mthreads -DHAVE_W32API_H -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -D__WXMSW__ -D_UNICODE -MTgcc_mswudll\wxregex_regcomp.o -MFgcc_mswudll\wxregex_regcomp.o.d -MD -MP ../../src/regex/regcomp.c
makefile.gcc:5778: recipe for target 'gcc_mswudll\wxregex_regcomp.o' failed
mingw32-make: *** [gcc_mswudll\wxregex_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_mswudll\wxregex_regcomp.o -O2 -mthreads -DHAVE_W32API_H -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -D__WXMSW__ -D_UNICODE -MTgcc_mswudll\wxregex_regcomp.o -MFgcc_mswudll\wxregex_regcomp.o.d -MD -MP ../../src/regex/regcomp.c
gcc: error: CreateProcess: No such file or directory
makefile.gcc:5702: recipe for target 'gcc_mswudll\wxregex_regcomp.o' failed
mingw32-make: *** [gcc_mswudll\wxregex_regcomp.o] Error 1
有没有关于我无法使用 codeblocks 的内置编译器编译 wxwidget 的信息?没有插件?
删除所有内容:wxWidgets、Code::Blocks 和 MinGW 或 TDM-GCC
* 下载并安装 C::B, 没有 MinGW 或 TDM
* 从 here 下载 TDM-GCC。如果您同时安装 32 位和 64 位版本,我建议您将它们安装在两个不同的文件夹中。
* 下载wxWidgets
打开命令window。假设你有 "C:\TDM32" 的 TDM 和 "C:\myWX" 的 wxWidgets。
使用这些命令编译wxWidgets:
PATH=%PATH%;C:\TDM32\bin
cd C:\myWX\build\msw
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 headers
* 可以找到 wxWidgets 库(.dll 或 .a,取决于您是否使用 "shared" 编译)