Page 1 of 1

关于wxWidgets的samples的编译

Posted: Tue Jan 06, 2009 2:52 am
by tomlu
由于本人初学wxWidgets,并且之前都是使用VC做程序开发所以对gcc的设置不是很熟悉。在使用编译mingw32编译wxWidgets自带的例程时会出现编译错误。估计是编译或链接路径上有问题。 后来想了一个办法,就是用codeblocks新建一个wxWidgets的项目然后将所有文件从项目中移除,将想要编译的例程的cpp文件拷到你新建的项目文件夹下,然后将此文件加入项目并编译。有时候可能会提示缺少一些 icon 或是 bmp 等文件,从对应的路径下拷过来就可以了。当然有时候还要改下例子源文件中的include路径。一般按照这种方式都可以解决例程的编译问题。

希望对初学者有所帮助.

Posted: Wed Jan 07, 2009 1:35 pm
by Utensil
对于MinGW,wxWidgets提供了Makefile.gcc进行编译,使用它就可以毫无问题地通过编译。

我个人用MinGW编译过所有的例子。

参见 http://blog.csdn.net/Utensil/archive/20 ... 31582.aspx

注意,有些例子需要wxWidgets本身编译时打开某些宏开关,请参见

http://docs.wxwidgets.org/trunk/page_samples.html

中的Build Note。

-Utensil

Posted: Sun Mar 22, 2009 5:12 pm
by ChenA
也可以用vc编啊。
nmake makefile.vc就行了。

Posted: Wed Apr 08, 2009 8:20 am
by morya
如果编译 wx 的时候用了类似于
nmake -f makefile.vc BUILD=release UNICODE=1 RUNTIME_LIBS=static
编译例子的时候,后面的东西也要带上。
否则……

Posted: Sun Apr 12, 2009 2:01 am
by ollydbg23
Utensil wrote:对于MinGW,wxWidgets提供了Makefile.gcc进行编译,使用它就可以毫无问题地通过编译。

我个人用MinGW编译过所有的例子。

参见 http://blog.csdn.net/Utensil/archive/20 ... 31582.aspx

注意,有些例子需要wxWidgets本身编译时打开某些宏开关,请参见

http://docs.wxwidgets.org/trunk/page_samples.html

中的Build Note。

-Utensil
你好,我看了这个帖子,也看了你在CSDN上面发表的那个帖子,但是你的CSDN上面的帖子,描述的是wxWidgets库的编译,并不是里面的sample的编译,想请您释疑一下。

我用的是codeblocks,也没有找到在sample目录下面找到codeblocks里面的工程文件cbp.

谢谢

Posted: Sun Apr 12, 2009 2:44 am
by Utensil
编译例子的方法和编译wxWidgets自身的方法是一致的。

我只需要进入到例子所在的文件夹,执行同样的命令就可以了,因为例子的文件夹里,同样也有makefile.gcc。

具体来说:

cd C:\wxWidgets\samples\minimal
evnset
rlvdll

另外,目前wxWidgets不提供Code::Blocks的工程文件。你可以用CB的wx向导在sample的文件夹现场创建一个。只是我个人通常使用命令行。

-Utensil

Posted: Sun Apr 12, 2009 3:06 am
by ollydbg23
Utensil wrote:编译例子的方法和编译wxWidgets自身的方法是一致的。

我只需要进入到例子所在的文件夹,执行同样的命令就可以了,因为例子的文件夹里,同样也有makefile.gcc。

具体来说:

cd C:\wxWidgets\samples\minimal
evnset
rlvdll

另外,目前wxWidgets不提供Code::Blocks的工程文件。你可以用CB的wx向导在sample的文件夹现场创建一个。只是我个人通常使用命令行。

-Utensil
谢谢大虾的有用信息。

下面是我操作的步骤:(假设我已经创建了 wxWidgets 的library)

就是命令行跑到:

D:\wxWidgets-2.8.10\samples\minimal

下面,然后运行

mingw32-make -f makefile.gcc

呵呵,这样子,对应的exe文件就生成了,我的由于wxWidgets生成的是monolithis的DLL库。

所以对应的exe文件就是:

D:\wxWidgets-2.8.10\samples\minimal\gcc_mswudll\minimal.exe
文件,双击就可以运行了,呵呵。(当然,需要把对应的DLL放到windows 的patch目录里面)

谢谢!果然只有交流才能得到解决,自己一个人瞎弄,估计怎么也是弄不出来的。

Posted: Sun Apr 12, 2009 3:10 am
by ollydbg23
补充一下,看了大虾的那个csdn的帖子,发现你的更牛。
你直接写了一个脚本

dbvdll.bat

这样,你就不需要手工的去修改config.gcc的那个文件了,直接运行脚本就可以了,而且你的这个脚本,在创建wxWidgets和samples都是一致的,赞!

Re:

Posted: Fri Sep 02, 2011 8:24 am
by sunhuiyu
ollydbg23 wrote:
Utensil wrote:编译例子的方法和编译wxWidgets自身的方法是一致的。

我只需要进入到例子所在的文件夹,执行同样的命令就可以了,因为例子的文件夹里,同样也有makefile.gcc。

具体来说:

cd C:\wxWidgets\samples\minimal
evnset
rlvdll

另外,目前wxWidgets不提供Code::Blocks的工程文件。你可以用CB的wx向导在sample的文件夹现场创建一个。只是我个人通常使用命令行。

-Utensil
谢谢大虾的有用信息。

下面是我操作的步骤:(假设我已经创建了 wxWidgets 的library)

就是命令行跑到:

D:\wxWidgets-2.8.10\samples\minimal

下面,然后运行

mingw32-make -f makefile.gcc

呵呵,这样子,对应的exe文件就生成了,我的由于wxWidgets生成的是monolithis的DLL库。

所以对应的exe文件就是:

D:\wxWidgets-2.8.10\samples\minimal\gcc_mswudll\minimal.exe
文件,双击就可以运行了,呵呵。(当然,需要把对应的DLL放到windows 的patch目录里面)

谢谢!果然只有交流才能得到解决,自己一个人瞎弄,估计怎么也是弄不出来的。
wxWidgets-2.8.12 编译该minimal例子,报错:
E:\wxWidgets-2.8.12\include/wx/chkconf.h:904:9: error: #error "wxUSE_TAB_DIALOG
must be defined."
E:\wxWidgets-2.8.12\include/wx/chkconf.h:912:9: error: #error "wxUSE_TEXTCTRL mu
st be defined."
E:\wxWidgets-2.8.12\include/wx/chkconf.h:920:9: error: #error "wxUSE_TIPWINDOW m
ust be defined."
E:\wxWidgets-2.8.12\include/wx/chkconf.h:928:9: error: #error "wxUSE_TOOLBAR mus
t be defined."
E:\wxWidgets-2.8.12\include/wx/chkconf.h:936:9: error: #error "wxUSE_TOOLTIPS mu
st be defined."
E:\wxWidgets-2.8.12\include/wx/chkconf.h:944:9: error: #error "wxUSE_TREECTRL mu
st be defined."
E:\wxWidgets-2.8.12\include/wx/chkconf.h:952:9: error: #error "wxUSE_VALIDATORS
must be defined."
E:\wxWidgets-2.8.12\include/wx/chkconf.h:960:9: error: #error "wxUSE_WXHTML_HELP
must be defined."
E:\wxWidgets-2.8.12\include/wx/chkconf.h:968:9: error: #error "wxUSE_XRC must be
defined."
E:\wxWidgets-2.8.12\include/wx/chkconf.h:1765:9: error: #error "wxMessageBox is
always needed"
minimal.cpp: In member function 'void MyFrame::OnAbout(wxCommandEvent&)':
minimal.cpp:198: error: 'wxMessageBox' was not declared in this scope
mingw32-make: *** [gcc_mswud\minimal_minimal.o] Error 1

我按照楼上各位给的方法操作的,用bat文件和直接输入mingw32-make -f makefile.gcc 都报这个错。
:(

Re: 关于wxWidgets的samples的编译

Posted: Fri Sep 02, 2011 8:31 am
by ollydbg23
@sunhuiyu
你wxWidgets2.8.12的库是否正常编译出来了?

samples需要在wx的库正常编译出来之后,再进行编译。我不清楚你的具体步骤,我这里都一切正常。

Re: 关于wxWidgets的samples的编译

Posted: Mon Sep 19, 2011 6:09 am
by sunhuiyu
ollydbg23 wrote:@sunhuiyu
你wxWidgets2.8.12的库是否正常编译出来了?

samples需要在wx的库正常编译出来之后,再进行编译。我不清楚你的具体步骤,我这里都一切正常。

库是肯定正常编译出来了,不过我是拷出来单独编译的,我发现在原文件夹下面进行编译,可以成功编译的。

Re: 关于wxWidgets的samples的编译

Posted: Mon Sep 19, 2011 1:11 pm
by samsam598
如果你是连同minimal例子同目录下的makefile.gcc一起拷出来的,那么:
1。猜测是否没有把WX目录指给系统环境,如无,则在你的BAT 文件里先SET PATH(WXWIN);
2。确保用编译库的同一命令编译例子。比如编译库的命令是
mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=1 UNICODE=1 2>errlog.txt
则编译例子也用上述命令。

Re: 关于wxWidgets的samples的编译

Posted: Mon Sep 19, 2011 1:28 pm
by ollydbg23
我觉得只要比较一下sample目录下编译的log和你copy出来编译错误的log,一下子就能找到原因所在,呵呵。