MinGW编译wxWidgets中的问题及解决方法

其实网上wxWidgets编译相关的博文,都没写到关键点上,泛泛而谈——就写了执行几个命令,就万事大吉了! 维基百科上的这个页面讲解了编译中可能遇到的各种问题及解决办法。比较懒,不想翻译。wxWidgets中文资料不多,英文的帮助、开发手册、书籍比较全面细致,如果要用wxWidgets就不得不阅读这些英文资料。如果编译wxWidgets的英文文档都看不懂,还是不要用wxWidgets算了。我以前用MFC、WinForm、WPF做Windows界面,但是跨不了平台;虽然.net这回真正开源了,但是WinForm和WPF的移植计划还没摆上台面。此外WinForm应该不会移植到Linux上了,WinForm的实现依赖了windows内核中对图形界面以及消息的处理。wxWidgets与MFC在消息处理、对话框模式图形程序、Frame-View-Document模式图形程序等方面比较像。此外wxWidgets更加灵活,也更加面向对象,没有那么多宏、那么#define常量;事件及事件参数的处理更像WinForm;wxWidgets还支持界面布局。所以决定学学wxWidgets,知识跨度也不大。

我在编译中就遇到了两个问题。

第一,MinGW默认用自带的sh.exe这个SHELL

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

sh.exe跟windows命令行的很多语法和内置命令不一样。所以直接用上面的命令会出现“找不到指定的文件”的问题。

这个的解决版本就是把其它版本的MinGW和MYSYS从系统的Path变量中去除,只留下要用一个。同时要在编译命令中加上SHELL=CMD.exe.

mingw32-make SHELL=CMD.exe -f makefile.gcc BUILD=release UNICODE=1 SHARED=0

第二,编译到最后,链接的时候出现“输入行太长”。

下面是我编译过程中出现问题的命令。

ar rcu C:\wxWidgets\lib\gcc_lib\libwxmsw30ud_core.a corelib_dummy.o corelib_event.o corelib_fs_mem.o corelib_msgout.o corelib_utilscmn.o corelib_main.o corelib_mslu.o corelib_volume.o corelib_activex.o corelib_app.o corelib_bitmap.o corelib_brush.o corelib_caret.o corelib_clipbrd.o corelib_colour.o corelib_cursor.o corelib_data.o corelib_dc.o corelib_dcclient.o corelib_dcmemory.o corelib_dcprint.o corelib_dcscreen.o corelib_dialup.o corelib_dib.o corelib_display.o corelib_enhmeta.o corelib_font.o corelib_fontenum.o corelib_fontutil.o corelib_gdiimage.o corelib_gdiobj.o corelib_gdiplus.o corelib_graphics.o corelib_icon.o corelib_imaglist.o corelib_minifram.o corelib_nonownedwnd.o corelib_dataobj.o corelib_dropsrc.o corelib_droptgt.o corelib_oleutils.o corelib_safearray.o corelib_palette.o corelib_pen.o corelib_popupwin.o corelib_printdlg.o corelib_printwin.o corelib_region.o corelib_renderer.o corelib_settings.o corelib_textmeasure.o corelib_tooltip.o corelib_toplevel.o corelib_uiaction.o corelib_utilsgui.o corelib_utilswin.o corelib_uxtheme.o corelib_window.o corelib_helpchm.o corelib_helpwin.o corelib_automtn.o corelib_uuid.o corelib_clrpickerg.o corelib_collpaneg.o corelib_filepickerg.o corelib_fontpickerg.o corelib_generic_statusbr.o corelib_prntdlgg.o corelib_msw_accel.o corelib_anybutton.o corelib_artmsw.o corelib_msw_bmpbuttn.o corelib_msw_button.o corelib_msw_checkbox.o corelib_msw_choice.o corelib_colordlg.o corelib_combo.o corelib_msw_combobox.o corelib_msw_control.o corelib_msw_dialog.o corelib_dirdlg.o corelib_dragimag.o corelib_evtloop.o corelib_filedlg.o corelib_frame.o corelib_msw_gauge.o corelib_headerctrl.o corelib_iniconf.o corelib_msw_listbox.o corelib_msw_listctrl.o corelib_mdi.o corelib_msw_menu.o corelib_menuitem.o corelib_metafile.o corelib_msgdlg.o corelib_nativdlg.o corelib_nativewin.o corelib_msw_notebook.o corelib_access.o corelib_ownerdrw.o corelib_panel.o corelib_progdlg.o corelib_msw_radiobox.o corelib_msw_radiobut.o corelib_richmsgdlg.o corelib_msw_scrolbar.o corelib_msw_slider.o corelib_msw_spinbutt.o corelib_spinctrl.o corelib_msw_statbmp.o corelib_msw_statbox.o corelib_statusbar.o corelib_msw_statline.o corelib_msw_stattext.o corelib_msw_toolbar.o corelib_msw_textctrl.o corelib_textentry.o corelib_msw_tglbtn.o corelib_treectrl.o corelib_msw_checklst.o corelib_msw_fdrepdlg.o corelib_fontdlg.o corelib_accelcmn.o corelib_accesscmn.o corelib_anidecod.o corelib_affinematrix2d.o corelib_appcmn.o corelib_artprov.o corelib_artstd.o corelib_arttango.o corelib_bmpbase.o corelib_bmpbtncmn.o corelib_bookctrl.o corelib_btncmn.o corelib_cairo.o corelib_checkboxcmn.o corelib_checklstcmn.o corelib_choiccmn.o corelib_clipcmn.o corelib_clrpickercmn.o corelib_colourcmn.o corelib_colourdata.o corelib_combocmn.o corelib_cmdproc.o corelib_cmndata.o corelib_containr.o corelib_cshelp.o corelib_ctrlcmn.o corelib_ctrlsub.o corelib_dcbase.o corelib_dcbufcmn.o corelib_dcgraph.o corelib_dcsvg.o corelib_dirctrlcmn.o corelib_dlgcmn.o corelib_dndcmn.o corelib_dobjcmn.o corelib_docmdi.o corelib_docview.o corelib_dpycmn.o corelib_dseldlg.o corelib_effects.o corelib_fddlgcmn.o corelib_filectrlcmn.o corelib_filehistorycmn.o corelib_filepickercmn.o corelib_fontpickercmn.o corelib_fldlgcmn.o corelib_fontcmn.o corelib_fontdata.o corelib_graphicc.o corelib_fontenumcmn.o corelib_fontmap.o corelib_fontutilcmn.o corelib_framecmn.o corelib_gaugecmn.o corelib_gbsizer.o corelib_gdicmn.o corelib_geometry.o corelib_gifdecod.o corelib_graphcmn.o corelib_headercolcmn.o corelib_headerctrlcmn.o corelib_helpbase.o corelib_iconbndl.o corelib_imagall.o corelib_imagbmp.o corelib_image.o corelib_imagfill.o corelib_imaggif.o corelib_imagiff.o corelib_imagjpeg.o corelib_imagpcx.o corelib_imagpng.o corelib_imagpnm.o corelib_imagtga.o corelib_imagtiff.o corelib_imagxpm.o corelib_layout.o corelib_lboxcmn.o corelib_listctrlcmn.o corelib_markupparser.o corelib_matrix.o corelib_menucmn.o corelib_modalhook.o corelib_mousemanager.o corelib_nbkbase.o corelib_overlaycmn.o corelib_ownerdrwcmn.o corelib_paper.o corelib_panelcmn.o corelib_persist.o corelib_pickerbase.o corelib_popupcmn.o corelib_preferencescmn.o corelib_prntbase.o corelib_quantize.o corelib_radiobtncmn.o corelib_radiocmn.o corelib_rearrangectrl.o corelib_rendcmn.o corelib_rgncmn.o corelib_scrolbarcmn.o corelib_settcmn.o corelib_sizer.o corelib_slidercmn.o corelib_spinbtncmn.o corelib_spinctrlcmn.o corelib_srchcmn.o corelib_statbar.o corelib_statbmpcmn.o corelib_statboxcmn.o corelib_statlinecmn.o corelib_stattextcmn.o corelib_stockitem.o corelib_tbarbase.o corelib_textcmn.o corelib_textentrycmn.o corelib_textmeasurecmn.o corelib_toplvcmn.o corelib_treebase.o corelib_uiactioncmn.o corelib_valgen.o corelib_validate.o corelib_valtext.o corelib_valnum.o corelib_wincmn.o corelib_windowid.o corelib_wrapsizer.o corelib_xpmdecod.o corelib_busyinfo.o corelib_buttonbar.o corelib_choicdgg.o corelib_choicbkg.o corelib_combog.o corelib_dcpsg.o corelib_dirctrlg.o corelib_dragimgg.o corelib_filectrlg.o corelib_headerctrlg.o corelib_infobar.o corelib_listbkg.o corelib_logg.o corelib_markuptext.o corelib_msgdlgg.o corelib_numdlgg.o corelib_progdlgg.o corelib_preferencesg.o corelib_printps.o corelib_renderg.o corelib_richmsgdlgg.o corelib_scrlwing.o corelib_selstore.o corelib_spinctlg.o corelib_splitter.o corelib_srchctlg.o corelib_statbmpg.o corelib_stattextg.o corelib_textdlgg.o corelib_tipwin.o corelib_toolbkg.o corelib_treectlg.o corelib_treebkg.o corelib_vlbox.o corelib_vscroll.o corelib_xmlreshandler.o

要不编译出来的n多obj文件链接成libwxmsw30ud_core.a库,这个命令超过windows命令行要求的最长命令了,所以执行不了。上面的命令还是我手动修改过的,要不然更长,这就已经一页word文档放不下了。

这个问题的解决应该灵活处理,维基上说Replace $(MONOLIB_OBJECTS) with gcc_mswu\monolib*.o。这是编译成一个库的时候这个地方肯定会出现问题。但是我还是编译成分散的库,而是在链接libwxmsw30ud_core.a时出现的问题。那么改法就不一样了。

在下面那个地方把$(CORELIB_OBJECTS)替换成gcc_mswud\corelib*.o。注意目录名和文件名前缀,我是在编译debug版本时出现的问题,所以目录是gcc_mswud。注意编译完成之后再替换回来,如果不替换release版本也从debug版本的目录中找obj文件进行链接了。

makefile中定义了 $(BASELIB_OBJECTS)、$(NETLIB_OBJECTS)、$(CORELIB_OBJECTS)、$(MONOLIB_OBJECTS),那个出问题了改那个,不要死抄。

时间: 2024-10-14 13:53:51

MinGW编译wxWidgets中的问题及解决方法的相关文章

CUDA程序编译过程中产生警告的解决方法

有时候经常使用别人用Tabhost+其它的实现demo.单纯利用Tabhost该如何使用呢? 下面看例子: public class MainActivity extends TabActivity { public TabHost tabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 获取对象 tabHost = getTabH

VS编译duilib项目时候的错误解决方法整理

@1:找不到Riched20.lib 用everything等软件搜索下磁盘,找到所在的目录添加到vs的库目录即可,我得是C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib:其他的vs版本可能不一样,自行搜索 @2: "IDispatchEx": 重定义:不同的基类型 点击打开链接 UIFlash.h行: #import "..\Utils/Flash11.tlb" raw_interfaces_only,

Ubuntu 14.04中root 密码忘记解决方法[转载+17.04亲测可用]

Ubuntu 14.04中root 密码忘记解决方法 Ubuntu 14.04中root 密码忘记解决方法 方法一: 如果用户具有sudo权限,那么直接可以运行如下命令: #sudo su root #passwd #更改密码 或者直接运行sudo passwd root命令就可以直接更改root密码. 有关sudo su的区别: 1.共同点:都是root用户的权限: 2.不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境:sudo是完全取得root的权限和root的工

realarm Android系统编译后内核无法启动的解决方法

由于之前版本使用的内核并非uImage格式,而在编译时使用的是非uImage格式编译,所以照成无法启动. 解决方法是,在编译内核时使用make uImage方式编译. 修改根目录下的build_realv210.sh文件,如下图所示 另外注意上图中CPU_JOB_NUM这个参数,要根据自己的电脑配置来选择,该参数在该文件的起始处设置,可以设置成电脑CPU核心数的2倍,例如:如果核心数为2,那么设置成4即可. 完整脚本下载地址:http://download.csdn.net/detail/u01

项目记录:spring+springmvc 项目中 @Transactional 失效的解决方法

第一步,修改spring的配置文件和springmvc的配置文件 --------------------------------applicationContext.xml <context:annotation-config/>  <context:component-scan base-package="com.xxx"> <context:exclude-filter type="annotation" expression=&

phpcms v9 中 PHPSSO无法通讯解决方法(PHPSSO无法通讯间接影响phpcms v9注册会员无法通过“重名无法通过”)

问题的由来 怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起第一个HelloWorld,然后在 HelloWorld 里面写相关逻辑代码,添加我们的层.精灵等 ~ 我们并不一定需要知道 Cocos2d-x 是如何运行或者在各种平台之上运行,也不用知道 Cocos2d-x 的游戏是如何运行起来的,它又是如何渲染界面的 ~~~ 两个入口 程序入口的概念是相对的,AppDelegate 作为跨平台程序入口,在这之上做了另一层的封装,封装了不同

Mac 下 Terminal 中 Java乱码的解决方法

在 .bash_profile 中增加一行 export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 就可以了. Mac 下 Terminal 中 Java乱码的解决方法,布布扣,bubuko.com

PowerShell因为在此系统中禁止执行脚本解决方法

PowerShell因为在此系统中禁止执行脚本解决方法 在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing". 所在位置 行:1 字符: 17 + E:\Test\test.ps1 <<<<     + CategoryInfo          : NotSpecified: (:) [], PSSecurityException    

【转】eclipse中window-&gt;preference选项中没有tomcat的解决方法

eclipse中window->preference选项中没有tomcat的解决方法 2011-09-09 13:46:35|  分类: eclipse|字号 订阅 其实一共有好几种方法,这只是其中的一种:建立link文件法 将下载的tomcat包解压缩到任何你能找到的目录中,也可以解压缩到eclipse下的plugins文件夹下,然后在eclipse目录下建立links文件夹,记住是links,不是link,不要把s掉了,建立好后,在该文件夹下新建一个文件,因为这里是tomcat插件,所以名字