编译安装wxWidgets

    技术2022-05-12  4

    环境:windows xp,eclispe—cpp

     

    <script type="text/javascript"> </script>

    wxWidgets 压缩包解压到你要安装的目标目录( C:/wxWidgets-2.8.0 )。

     

    建立下列系统环境变量:

           WXWIN   C:/wxWidgets-2.8.0

     

    打开一个命令行窗口,进入 wxWidgets 目录中进行编译安装。如下图:

          

     

    具体的编译选项可参考 wxWidgets 提供的 install.txt 文件。

     

    这个编译可能需要一段时间。在编译完成后,要将 C:/wxWidgets-2.8.10/lib/gcc_lib/mswud/wx 复制到 C:/wxWidgets-2.8.4/include/wx

     

    Eclipse 中新建一个项目,选择项目类型为 Managed Make C++ Project ,项目名为 HelloWorld ,其余全部可以保持缺省设置。

     

    选择 c/c++ Build -> Build Settings ,设置 Expand Build Environment Macros, 如下图:

    选择 c/c++ Build ->Tool Settings,

     

    GCC C++ Compiler -> Preprocessor 中添加一个 Symbol __WXMSW__

    GCC C++ Compiler-> Directories 中添加 Include 路径: "${WXWIN}/include [c1]   " "${MINGW}/include [c2]   "

    GCC C++ Compiler->Miscellaneous 修改 Other flags -c -Wundef -Wno-ctor-dtor-privacy -fno-strict-aliasing -mthreads –mwindows [c3]  

     

    GCC C++ Linker -> Miscellaneous 修改 Linker Flags 为: --enable-auto-import -mthreads –mwindows [c4]  

    GCC C++ Linker -> Libraries 增加 -L "$(WXWIN)/lib/gcc_lib" “$(MINGW)/lib”

                                增加 -l wxmsw28_core;wxbase28;wxexpat;wxjpeg;wxpng;wxzlib;kernel32; user32;gdi32;comdlg32;winspool;winmm;shell32;comctl32;ole32;oleaut32;uuid;rpcrt4;advapi32;wsock32;odbc32;opengl32. [c5]

     

     

    HelloWorld 项目中建立 C++ 源程序文件和头文件: helloworld.h helloworld.cpp ,其内容如下:

    Helloworld.h

     

    #ifndef HELLOWORLD_H_

    #define HELLOWORLD_H_

    class BasicApplication : public wxApp {

    public :

        virtual bool OnInit();

    };

     

    class BasicFrame : public wxFrame {

    public :

         BasicFrame( const wxChar *title,

                    int xpos,

                    int ypos,

                    int width,

                    int height);

        ~BasicFrame();

    };

    #endif /*HELLOWORLD_H_*/

     

     

    Helloworld.cpp

     

    #include <wx/wx.h>

    #include "helloworld.h"

     

    IMPLEMENT_APP(BasicApplication)

     

    bool BasicApplication::OnInit() {

        BasicFrame *frame = new BasicFrame( "Hello World!" ,50,50,450,300);

        frame->Show(TRUE);

        SetTopWindow(frame);

        return TRUE;

    }

     

    BasicFrame::BasicFrame( const wxChar* title,

                            int xpos,

                           int ypos,

                           int width,

                           int height)

            : wxFrame((wxFrame *) NULL ,

                      -1 ,

                      title ,

                      wxPoint(xpos,ypos) ,

                       wxSize(width,height )

                     ) { }

     

    BasicFrame::~BasicFrame() {

    }

     

     

    编译,并运行一下,效果见下图


      [c1]

    使用大括号,建立下列系统环境变量:

           WXWIN   C:/wxWidgets-2.8.0

      [c2]

    建立下列系统环境变量:

                  MINGW   C:/MinGW

      [c3]

    会存在一个错误,这个选项去掉,就没有这个这个错误;

      [c4]

    会存在一个错误,这个选项去掉,就没有这个这个错误;

      [c5]

    输入文件后,在 –l 中按照每个库显示,不能有空格,可以从 debug 文件夹中的文件看到, -l 加载各个库是否正常;

     

    在C/C++Build选项界面中,选择“Configuration Settings”的"Tool Settings“。 在Tool Settings中选择"GCC C++ Compiler"->"Preprocessor", 在Defined symbols列表中加入:__WXMSW__ (注意,两侧都是双下划线), __WXDEBUG__ 和 _UNICODE (此处是单下划线, 因为你的wxWidgets是用unicode编码编译的,所以此处一定要设置该宏,不然在编译时会收到大量"undefined reference")。 接下来你需要选择Directories项并添加include及lib目录,在这里你需要添加 "C:/wxWidgets-2.8.0/lib/gcc_lib/mswud" "C:/wxWidgets-2.8.0/lib/gcc_lib/mswu" "C:/wxWidgets-2.8.0/include" "C:/wxWidgets-2.8.0/contrib/include" 接下来在下面的 Miscellaneous 选项中的Other Flags中输入以下这句 -c -Wundef -Wno-ctor-dtor-privacy -fno-strict-aliasing

    接下来点选到 "GCC C++ Linker" 部分。在这部分,首先选择"Libraries"并在右侧的Libraries栏中按顺序 键入以下库名:

    wxmsw28ud_xrc;wxmsw28ud_richtext;wxbase28ud_net;wxmsw28ud_dbgrid; wxbase28ud_odbc;wxmsw28ud_media;wxmsw28ud_aui;wxmsw28ud_html; wxmsw28ud_adv;wxbase28ud_xml;wxmsw28ud_core;wxbase28ud;wxtiffd;wxjpegd;wxpngd;wxzlibd; wxregexud;wxexpatd;kernel32;user32;gdi32;comdlg32;winspool;winmm;shell32;comctl32; ole32;oleaut32;uuid;rpcrt4;advapi32;wsock32;odbc32

    库名全部加入后在下面一栏的"Library search path (-L)"中加入以下目录

    "C:/wxWidgets-2.8.0/lib/gcc_lib"

    "C:/wxWidgets-2.8.0/lib"

    添加完成后,选择该部分中的"Miscellaneous"项,并在"Linker flags"中键入

    -Wl,--subsystem,windows -mwindows

     


    最新回复(0)