其实网上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),那个出问题了改那个,不要死抄。

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

  1. [转]MinGW编译wxWidgets问题

    其实利用MinGW编译wxWidgets是一件挺简单的事情,但是最近在编译的时候遇到一些问题,并找到解决方案,因此在此分享一下个人经验.编译出错的原因是由于安装了MSYS的缘故.   错误信息类似于如 ...

  2. Ant编译utf-8非法字符:/65279 解决方法

    原文链接:http://blog.csdn.net/xiyuan1999/article/details/5989336   Ant编译utf-8非法字符:/65279 解决方法   使用ant编译j ...

  3. [转载]Ubuntu 14.04中root 密码忘记解决方法

      Ubuntu 14.04中root 密码忘记解决方法 方法一: 如果用户具有sudo权限,那么直接可以运行如下命令: #sudo su root #passwd #更改密码 或者直接运行sudo ...

  4. 服务器个人环境下pytorch0.4.1编译warp-ctc遇到的问题及解决方法

    一.关于warp-ctc CTC可以生成一个损失函数,用于在序列数据上进行监督式学习,不需要对齐输入数据及标签,经常连接在一个RNN网络的末端,训练端到端的语音或文本识别系统.CTC论文 CTC网络的 ...

  5. (转)ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

    早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问 ...

  6. ORA-01652:无法通过128(在表空间temp中)扩展temp段 解决方法

    ORA-01652:无法通过128(在表空间temp中)扩展temp段 解决方法 (2016-10-21 16:49:53)   今天在做一个查询的时候,报了一个"ORA-01652无法通过 ...

  7. XCode编译文件过多导致内存吃紧解决方法

    XCode编译文件过多导致内存吃紧解决方法 /Users/~~/Library/Developer/Xcode/DerivedData 1) 然后 找到编译文件 删除 就好了哦 快去试试看吧

  8. Oracle中的 UPDATE FROM 解决方法

    转:http://www.cnblogs.com/JasonLiao/archive/2009/12/23/1630895.html Oracle中的 UPDATE FROM 解决方法 在表的更新操作 ...

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

    PowerShell因为在此系统中禁止执行脚本解决方法   在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 " ...

随机推荐

  1. 将Word文档发给别人时如何限制别人只能修改文档部分内容

    将Word文档发给别人时如何限制别人只能修改文档部分内容  转自:互联网.时间:2014-04-16   作者:snow   来源:互联网 在很多情况下我们都不希望别人修改我们的文档内容,特别实在将W ...

  2. Android--输入自动提示AutoCompleteTextView

    布局文件: <TextView android:id="@+id/title" android:layout_width="wrap_content" a ...

  3. C++ 之旅:前言

    日前,拿起了C++教材开始学习. 在大学二年级的时候,其实C++已经是我们的必修课程.然而,那时的我刚从C语言的噩梦中逃出来,对C++也不甚喜爱.刚接触编程的我当时实在无法理解譬如下面这段 int x ...

  4. Unity原生渲染方案

    Unity原生渲染方案 作者:3dimensions three_dimensions@live.cn 本文为原创内容,转载请注明出处. 做这个的动机是想在原生代码中使用Unity的材质系统绘制,同时 ...

  5. Unity球形插值Slerp解析

    Unity球形插值,官方有个太阳升降的例子: http://docs.unity3d.com/ScriptReference/Vector3.Slerp.html 一开始主观认为这个球形插值Slerp ...

  6. HTML5自定义属性对象dataset

    前面转载的"图片懒加载",因为基础不好,里面判断dataset的语句看不懂,经别人推荐找到一篇专门讲解dataset的文章,我心甚悦^ http://www.zhangxinxu. ...

  7. deep learning新征程

    deep learning新征程(一) zoerywzhou@gmail.com http://www.cnblogs.com/swje/ 作者:Zhouwan  2015-11-26   声明: 1 ...

  8. 慕课网-安卓工程师初养成-2-12 如何在Java中使用注释

    来源:http://www.imooc.com/code/1274 在编写程序时,经常需要添加一些注释,用以描述某段代码的作用. 一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的 1/3 ...

  9. 农村的“无为教育” (FW)

    农村的“无为教育” 发布时间:2009年11月5日 11时33分 “以孩子影响孩子”,准确地说,是以偏远乡村贫困家庭的进取孩子,影响城市有相当收入的“问题孩子”.有两点值得注意,一是农村孩子影响城市孩 ...

  10. ionic localstorage

    angular.module('locals',[]) .factory('ls', ['$window', function($window) { return { set: function(ke ...