在DLL(程序文件(x86)\ codeblocks \ mingw \ bin \ as.exe)中找不到(__ printf __)

时间:2017-04-16 22:59:00

标签: c++ compiler-errors compilation wxwidgets mingw32

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

当尝试使用mingW32构建wxwidgets时,我遇到了错误。我安装了minGW32和codeblocks 16.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)\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这一事实的任何信息?没有插件?

1 个答案:

答案 0 :(得分:0)

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

*下载并安装C :: B,不带 MinGW或TDM
*从here下载TDM-GCC。如果您同时安装32& 64位版本我建议你将它们安装在两个不同的文件夹中。
*下载wxWidgets

打开命令窗口。假设你有TDM在" C:\ TDM32"和wxWidgets在" C:\ myWX"。
使用这些命令编译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&#d; 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取决于你是否使用" shared"编译)可以找到