关于wxWidgets的samples的编译

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
tomlu
In need of some credit
In need of some credit
Posts: 1
Joined: Tue Dec 30, 2008 5:33 am

关于wxWidgets的samples的编译

Post by tomlu »

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

希望对初学者有所帮助.
Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post 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
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/
ChenA
In need of some credit
In need of some credit
Posts: 6
Joined: Sat Dec 13, 2008 7:03 pm

Post by ChenA »

也可以用vc编啊。
nmake makefile.vc就行了。
morya
Experienced Solver
Experienced Solver
Posts: 96
Joined: Fri Dec 14, 2007 2:29 am
Location: Xuzhou, China

Post by morya »

如果编译 wx 的时候用了类似于
nmake -f makefile.vc BUILD=release UNICODE=1 RUNTIME_LIBS=static
编译例子的时候,后面的东西也要带上。
否则……
ollydbg23
Super wx Problem Solver
Super wx Problem Solver
Posts: 438
Joined: Fri Dec 12, 2008 10:31 am

Post 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.

谢谢
Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post by Utensil »

编译例子的方法和编译wxWidgets自身的方法是一致的。

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

具体来说:

cd C:\wxWidgets\samples\minimal
evnset
rlvdll

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

-Utensil
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/
ollydbg23
Super wx Problem Solver
Super wx Problem Solver
Posts: 438
Joined: Fri Dec 12, 2008 10:31 am

Post 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目录里面)

谢谢!果然只有交流才能得到解决,自己一个人瞎弄,估计怎么也是弄不出来的。
ollydbg23
Super wx Problem Solver
Super wx Problem Solver
Posts: 438
Joined: Fri Dec 12, 2008 10:31 am

Post by ollydbg23 »

补充一下,看了大虾的那个csdn的帖子,发现你的更牛。
你直接写了一个脚本

dbvdll.bat

这样,你就不需要手工的去修改config.gcc的那个文件了,直接运行脚本就可以了,而且你的这个脚本,在创建wxWidgets和samples都是一致的,赞!
sunhuiyu
In need of some credit
In need of some credit
Posts: 4
Joined: Wed Aug 03, 2011 5:35 am

Re:

Post 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 都报这个错。
:(
ollydbg23
Super wx Problem Solver
Super wx Problem Solver
Posts: 438
Joined: Fri Dec 12, 2008 10:31 am

Re: 关于wxWidgets的samples的编译

Post by ollydbg23 »

@sunhuiyu
你wxWidgets2.8.12的库是否正常编译出来了?

samples需要在wx的库正常编译出来之后,再进行编译。我不清楚你的具体步骤,我这里都一切正常。
sunhuiyu
In need of some credit
In need of some credit
Posts: 4
Joined: Wed Aug 03, 2011 5:35 am

Re: 关于wxWidgets的samples的编译

Post by sunhuiyu »

ollydbg23 wrote:@sunhuiyu
你wxWidgets2.8.12的库是否正常编译出来了?

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

库是肯定正常编译出来了,不过我是拷出来单独编译的,我发现在原文件夹下面进行编译,可以成功编译的。
samsam598
Super wx Problem Solver
Super wx Problem Solver
Posts: 340
Joined: Mon Oct 06, 2008 12:55 pm

Re: 关于wxWidgets的samples的编译

Post 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
则编译例子也用上述命令。
Last edited by samsam598 on Tue Sep 20, 2011 2:48 am, edited 1 time in total.
Regards,
Sam
-------------------------------------------------------------------
Windows 10 64bit
VS Community 2019
msys2-mingw13.2.0 C::B character set: UTF-8/GBK(Chinese)
wxWidgets 3.3/3.2.4 Unicode Mono Static gcc static build
ollydbg23
Super wx Problem Solver
Super wx Problem Solver
Posts: 438
Joined: Fri Dec 12, 2008 10:31 am

Re: 关于wxWidgets的samples的编译

Post by ollydbg23 »

我觉得只要比较一下sample目录下编译的log和你copy出来编译错误的log,一下子就能找到原因所在,呵呵。
Post Reply