vs2008 安装 wxwidgets 出现的问题

在Visual Studio 2008中安装wxWidgets时遇到错误LNK2019。解决方法包括修改项目属性,删除_CONSOLE,添加_WINDOWS,设置子系统为Windows,并配置预处理器定义。此外,详细介绍了从下载到编译wxWidgets库的步骤,包括编译Debug和Release版本,并调整运行时库选项以避免依赖VS2008运行时库。
摘要由CSDN通过智能技术生成

vs2008安装 wxwidgets         : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用 

 

1,.菜单中选择 Project->Properties, 弹出Property Pages窗口
2,Configuration Properties->C/C++->Preprocessor,然后在右边栏的Preprocessor Definitions对应的项中删除_CONSOLE, 添加_WINDOWS.(如果有WIND32的话也要把WIND32删除,_如果有DEBUG可以不管它)
3,Configuration Properties->Linker->System,然后在右边栏的SubSystem对应的项改为Windows(/SUBSYSTEM:WINDOWS)

 

 

一、下载并解压缩wxWidgets
1. 到 http://www.wxwidgets.org/downloads 下载一个wxMSW版本的wxWidgets。(wxMSW是专门针对Windows系统)

  PS:这里推荐解压缩 版:http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.10.zip

2. 把下载的wxMSW-2.8.10.zip解压缩到C盘。(wxWidgets的安装路径最好不要出现空格和中文)

  例 如:C:/wxMSW-2.8.10

二、编译wxWidgets
1. 进入“C:/wxMSW-2.8.10/build/msw”目录。用VS2008打开wx.dsw,提示是否进行项目转换,点确定。

2. 编译Debug版本的库右击《解决方案->配置管理器->活动解决方案配置 ->Unicode Debug》。然后右击《解决方案->生成解决方案》,等一会儿就可以编译出Debug版本的wxWidgets库了。

3. 编 译Relase版本的库Release版本的wxWidgets库虽然也可以通过类似的方法去编译,但编译 出来的库仍然依赖于visual studio 2008的运行时库。Debug版本的库依赖VS2008也就算了,反正是自己调试用的。Release版本可是要给别人用的,再带上一大堆dll就不好 了。为了解决这个问题,我们需要先(解决方案->配置管理器->活动解决方案配置->Unicode Release),然后在解决方案资源管理器中,针对每一个项目右击《属性->配置属性->C/C++ ->代码生成->运行时库: 多线程(/MT)》(HOHO, 有20个项目要改属性啊~~~)。最后再右击《解决方案->生成解决方案》就可以了。

编译好后的wxWidgets会在 C:/wxMSW-2.8.10/lib/vc_lib目录下生成一系列的lib文件,这些lib文件的名字遵循下面的命 名规则:不依赖于GUI组件的库会以"wxbase"开头,紧跟着的是版本号,然后的字母表明这个库是否是编译为Unicode('u')或是否是编译为 Debug('d'),名字中的最后部分是wxWidgets组件的名字。
注意:wxWidgets编译完后在C:/wxMSW- 2.8.10/build/msw目录下会生成许多预编译头文件,占了很大的空间,如果确定以后不再编译 wxWidgets库的话,可以考虑删掉。

三、配置VS2008

  1. 打开工具 -> 选项 -> 项目和解决方案 -> VC++目录 -> 显示以下内容的目录
2. 在“包含文件”中加入“C:/wxMSW-2.8.10/include”和“C:/wxMSW-2.8.10/include/msvc”
3. 在“库文件” 中加入“C:/wxMSW-2.8.10/lib/vc_lib”

四、创建 wxWidgets项目

  新建一个空项目。然后设置项目的一些属性,可以选择下面的其中一 个来设置。譬如你如果打算使用Unicode,那么选择Unicode Debug或Unicode Release,如果你仅仅想调试程序而非发布,则只需要选择Debug设置。

Debug:
项目->属性 ->配置属性->常规 -> 字符集: 未设置
项目->属性->配置属性->C/C++ -> 代码生成 ->运行时库: 多线程调试(/MTd)
项目->属性->配置属性->链接器 -> 输入 -> 附加依赖项: wxbase28d.lib wxmsw28d_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

Release:
项目->属性 ->配置属性->常规->字符集: 未设置
项目->属性->配置属性->C/C++ ->代码生成->运行时库: 多线程(/MT)
项目->属性->配置属性->链接器->输入-> 附加依赖项: wxbase28.lib wxmsw28_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

Unicode Debug:
项目->属性 -> 配置属性 -> 常规 -> 字符集: 使用 Unicode 字符集
项目->属性 -> 配置属性 -> C/C++ -> 代码生成 ->运行时库: 多线程调试(/MTd)
项目->属性 -> 配置属性 -> 链接器 -> 输入 -> 附加依赖项: wxbase28ud.lib wxmsw28ud_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

Unicode Release:
项目->属性 -> 配置属性 -> 常规 -> 字符集: 使用 Unicode 字符集
项目->属性 -> 配置属性 -> C/C++ -> 代码生成 ->运行时库: 多线程(/MT)
项 目->属性 -> 配置属性 -> 链接器 -> 输入 -> 附加依赖项: wxbase28u.lib wxmsw28u_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

这些静态链接库都是一 些可能会使用到的 Windows 系统的库,根据需要增减,比如我从来不用odbc,就不需要在这里添加 odbc32.lib。而 wxWidgets 的静态库会自动添加到工程中,不需要在这里设置,在 %WXPATH%/include/msvc/wx/setup.h 文件中可以看到加载这些库的代码。

编译成依赖 DLL 的执行文件还需要加上预处理指令 WXUSINGDLL
用 UNICODE 编译则需要加上预处理指令 _UNICODE
还有一种 Universal 编译,要加上预处理指令 __WXUNIVERSAL__
这样一个普通的 wxWdigets 项目就设置好了。

 

复制以下代 码添加到你的CPP文件中,进行编译,测试,OK!

代码
/// //
//  Name:        minimal.cpp
//  Purpose:     Minimal wxWidgets sample
//  Author:      Julian Smart
//  Modified by:
//  Created:     04/01/98
//  RCS-ID:      $Id: minimal.cpp 43915 2006-12-11 09:33:34Z CE $
//  Copyright:   (c) Julian Smart
//  Licence:     wxWindows licence
/// //

//  =========================================&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值