Windows下VS(vs2015)命令行编译wxWidgets与Hello world 工程

1,下载wxwidgets包,

可以下载已经编译好的版本,但是我在github上提供的链接里面找不到已经编译好的版本,只能使用这种方法自己编译了,即,使用源代码版,自己编译,这里讲的是自己编译方法


2,解压

将下载好的源代码压缩文件解压到任意位置,路径下不要有空格或者中文字符,免得出错,特别是不要将其解压到 “C:\Program Files” ,免得makefile或者使用命令行时出错。

3,编译:vs C++ 编译器,从命令行处编译

打开命令行工具Visual Studio Command Prompt,在开始菜单处有


将路径更改到 %WXWIN%\build\msw
(为你解压的路径,如我的为D:\C++GUI-wxWidgets3.0.3\build\msw)
编译默认的debug版本,在命令行中输入
> nmake /f makefile.vc
编译默认的release版本,在命令行中输入
> nmake /f makefile.vc BUILD=release
编译默认的release DLL 版本,在命令行中输入
> nmake /f makefile.vc BUILD=release SHARED=1
为了验证是否编译成功,将当前目录切换到 samples\minimal 并且运行于上面一样的命令行,在这个目录下,会有一个 working minimal wxWidgets sample

如果想要rebuild, 输入如下命令即可
"clean" target first 或者 "nmake /a".
更多编译参数,请参考如下文件
%%%%%\docs\msw\install.txt   //windows的安装方法

在此文件的 Makefile parameters 部分。

4,配置:(%%%%%%%% 为解压路径下的绝对目录)

1、包含目录
右击项目,打开项目属性页,配置一项选择所有配置
配置属性->C/C++->常规->附加包含目录中添加:
%%%%%%%%\include 
%%%%%%%%\lib\vc_lib\mswu 

2、库目录
配置属性->链接器->常规->附加库目录中添加:
%%%%%%%%%\lib\vc_lib 

3、 MFC的使用
配置属性->MFC的使用:使用标准 Windows 库

4、依赖项
配置属性->链接器->输入->附加依赖项按照如下规则添加编译出来的lib文件:
debug选项:
wxbase30ud_net.lib 
wxmsw30ud_html.lib 
wxbase30ud_xml.lib 
wxmsw30ud_adv.lib 
wxmsw30ud_aui.lib 
wxmsw30ud_gl.lib 
wxmsw30ud_media.lib 
wxmsw30ud_propgrid.lib 
wxmsw30ud_qa.lib 
wxmsw30ud_ribbon.lib 
wxmsw30ud_richtext.lib 
wxmsw30ud_stc.lib 
wxmsw30ud_xrc.lib 
wxscintillad.lib 
wxmsw30ud_core.lib 
wxbase30ud.lib 
wxtiffd.lib 
wxjpegd.lib 
wxpngd.lib 
wxzlibd.lib 
wxexpatd.lib 
winmm.lib 
comctl32.lib   // 以下4个千万不要忘记添加,否则会报 链接错误 错,
rpcrt4.lib 
wsock32.lib 
odbc32.lib 
release 选项:
wxbase30u.lib 
wxbase30u_net.lib 
wxbase30u_xml.lib 
wxexpat.lib 
wxjpeg.lib 
wxmsw30u_adv.lib 
wxmsw30u_aui.lib 
wxmsw30u_core.lib 
wxmsw30u_gl.lib 
wxmsw30u_html.lib 
wxmsw30u_media.lib 
wxmsw30u_propgrid.lib 
wxmsw30u_qa.lib 
wxmsw30u_ribbon.lib 
wxmsw30u_richtext.lib 
wxmsw30u_stc.lib 
wxmsw30u_xrc.lib 
wxpng.lib 
wxregexu.lib 
wxscintilla.lib 
wxtiff.lib 
wxzlib.lib 
comctl32.lib   // 此两项不要忘记,否则会报 链接错误 错,
rpcrt4.lib 
5、预处理器定义
配置一项改为Debug
配置属性->C/C++->预处理器->预处理器定义中添加:
__WXMSW__ 
__WXDEBUG__ 

Hello world 代码:

#include "wx\wxprec.h"
#include "wx\wx.h"
#include <iostream>
#include <string>

using namespace std;

#ifndef WX_PRECOMP
	#include "include\wx\wx.h"
#endif

class MyApp : public wxApp
{
public: virtual bool OnInit();
};

class MyFrame : public wxFrame {
public:
	MyFrame(const wxString & title, const wxPoint & pos, const wxSize & size);

private:
	void OnHello(wxCommandEvent & event);
	void OnExit(wxCommandEvent & event);
	void OnAbout(wxCommandEvent & event);
	wxDECLARE_EVENT_TABLE();
};

enum {
	ID_Hello = 1
};

wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
	EVT_MENU(ID_Hello, MyFrame::OnHello)
	EVT_MENU(wxID_EXIT, MyFrame::OnExit)
	EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
wxEND_EVENT_TABLE()
wxIMPLEMENT_APP(MyApp); 
// main function this macro is the main function
// create an application instance and starts the program


bool MyApp::OnInit()
{
	MyFrame *frame = new MyFrame("Hello World", wxPoint(50, 50), wxSize(450, 340));
	frame->Show(true);
	return true;
}
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
	: wxFrame(NULL,wxID_ANY, title, pos, size)
{
	wxMenu *menuFile = new wxMenu;
	menuFile->Append(ID_Hello, "&Hello...\tCtrl-H",
		"Hello string show in status bar for this menu item");
	menuFile->AppendSeparator();
	menuFile->Append(wxID_EXIT);

	wxMenu * menuHelp = new wxMenu;
	menuHelp->Append(wxID_ABOUT);

	wxMenuBar *menuBar = new wxMenuBar;
	menuBar->Append(menuFile, "&File");
	menuBar->Append(menuHelp, "&Help");

	SetMenuBar(menuBar);

	CreateStatusBar();
	SetStatusText("Welcome to wxWidgets!");
}

void MyFrame::OnExit(wxCommandEvent &event)
{
	Close(true);
}

void MyFrame::OnAbout(wxCommandEvent& event)
{
	wxMessageBox("This is a wxWidgets' Hello World sample", "About Hello World", wxOK | wxICON_INFORMATION);
}

void MyFrame::OnHello(wxCommandEvent & event)
{
	wxLogMessage("Hello world from wxWidgets!");
}
运行结果:

恶心错误
error LNK2019: 无法解析的外部符号 _main
1. 右击项目,打开“属性”页

2.更改上图红色框内容为/subsystem:windows。如果是刚开始默认的是/subsystem:windows
则改为/subsytem:console

更多编译方法及对各种编译器的支持,请参考解压文件夹下的如下文件:

%%%%%\docs\readme.txt

%%%%%\docs\msw\install.txt   //windows的安装方法

%%%%%\docs\osx\install.txt   // 苹果操作系统的安装方法

%%%%%\docs\x11\install.txt  //LINUX操作系统的安装方法

猜你喜欢

转载自blog.csdn.net/u012183487/article/details/79780689