当前位置:   article > 正文

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

vs2015的命令行工具

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选项:
  1. wxbase30ud_net.lib
  2. wxmsw30ud_html.lib
  3. wxbase30ud_xml.lib
  4. wxmsw30ud_adv.lib
  5. wxmsw30ud_aui.lib
  6. wxmsw30ud_gl.lib
  7. wxmsw30ud_media.lib
  8. wxmsw30ud_propgrid.lib
  9. wxmsw30ud_qa.lib
  10. wxmsw30ud_ribbon.lib
  11. wxmsw30ud_richtext.lib
  12. wxmsw30ud_stc.lib
  13. wxmsw30ud_xrc.lib
  14. wxscintillad.lib
  15. wxmsw30ud_core.lib
  16. wxbase30ud.lib
  17. wxtiffd.lib
  18. wxjpegd.lib
  19. wxpngd.lib
  20. wxzlibd.lib
  21. wxexpatd.lib
  22. winmm.lib
  23. comctl32.lib // 以下4个千万不要忘记添加,否则会报 链接错误 错,
  24. rpcrt4.lib
  25. wsock32.lib
  26. odbc32.lib
release 选项:
  1. wxbase30u.lib
  2. wxbase30u_net.lib
  3. wxbase30u_xml.lib
  4. wxexpat.lib
  5. wxjpeg.lib
  6. wxmsw30u_adv.lib
  7. wxmsw30u_aui.lib
  8. wxmsw30u_core.lib
  9. wxmsw30u_gl.lib
  10. wxmsw30u_html.lib
  11. wxmsw30u_media.lib
  12. wxmsw30u_propgrid.lib
  13. wxmsw30u_qa.lib
  14. wxmsw30u_ribbon.lib
  15. wxmsw30u_richtext.lib
  16. wxmsw30u_stc.lib
  17. wxmsw30u_xrc.lib
  18. wxpng.lib
  19. wxregexu.lib
  20. wxscintilla.lib
  21. wxtiff.lib
  22. wxzlib.lib
  23. comctl32.lib // 此两项不要忘记,否则会报 链接错误 错,
  24. rpcrt4.lib
5、预处理器定义
配置一项改为Debug
配置属性->C/C++->预处理器->预处理器定义中添加:
__WXMSW__ 
__WXDEBUG__ 

Hello world 代码:

  1. #include "wx\wxprec.h"
  2. #include "wx\wx.h"
  3. #include <iostream>
  4. #include <string>
  5. using namespace std;
  6. #ifndef WX_PRECOMP
  7. #include "include\wx\wx.h"
  8. #endif
  9. class MyApp : public wxApp
  10. {
  11. public: virtual bool OnInit();
  12. };
  13. class MyFrame : public wxFrame {
  14. public:
  15. MyFrame(const wxString & title, const wxPoint & pos, const wxSize & size);
  16. private:
  17. void OnHello(wxCommandEvent & event);
  18. void OnExit(wxCommandEvent & event);
  19. void OnAbout(wxCommandEvent & event);
  20. wxDECLARE_EVENT_TABLE();
  21. };
  22. enum {
  23. ID_Hello = 1
  24. };
  25. wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
  26. EVT_MENU(ID_Hello, MyFrame::OnHello)
  27. EVT_MENU(wxID_EXIT, MyFrame::OnExit)
  28. EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
  29. wxEND_EVENT_TABLE()
  30. wxIMPLEMENT_APP(MyApp);
  31. // main function this macro is the main function
  32. // create an application instance and starts the program
  33. bool MyApp::OnInit()
  34. {
  35. MyFrame *frame = new MyFrame("Hello World", wxPoint(50, 50), wxSize(450, 340));
  36. frame->Show(true);
  37. return true;
  38. }
  39. MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
  40. : wxFrame(NULL,wxID_ANY, title, pos, size)
  41. {
  42. wxMenu *menuFile = new wxMenu;
  43. menuFile->Append(ID_Hello, "&Hello...\tCtrl-H",
  44. "Hello string show in status bar for this menu item");
  45. menuFile->AppendSeparator();
  46. menuFile->Append(wxID_EXIT);
  47. wxMenu * menuHelp = new wxMenu;
  48. menuHelp->Append(wxID_ABOUT);
  49. wxMenuBar *menuBar = new wxMenuBar;
  50. menuBar->Append(menuFile, "&File");
  51. menuBar->Append(menuHelp, "&Help");
  52. SetMenuBar(menuBar);
  53. CreateStatusBar();
  54. SetStatusText("Welcome to wxWidgets!");
  55. }
  56. void MyFrame::OnExit(wxCommandEvent &event)
  57. {
  58. Close(true);
  59. }
  60. void MyFrame::OnAbout(wxCommandEvent& event)
  61. {
  62. wxMessageBox("This is a wxWidgets' Hello World sample", "About Hello World", wxOK | wxICON_INFORMATION);
  63. }
  64. void MyFrame::OnHello(wxCommandEvent & event)
  65. {
  66. wxLogMessage("Hello world from wxWidgets!");
  67. }
运行结果:

恶心错误
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操作系统的安装方法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/40386
推荐阅读
相关标签
  

闽ICP备14008679号