如何把VS2008上编的debug、release程序在没装VS的xp机器上运行

合集下载

VS2008开发环境下调试VC++程序入门

VS2008开发环境下调试VC++程序入门

Vs2008开发环境下调试vc++程序入门一、菜单栏中和调试有关的各菜单选项图1-11、Breakpoints显示程序中所有已加的断点。

2、Start Debugging 开始调试程序,如果程序中没有断点,则一直运行完毕,如果程序中设置有断点,则动行至断点。

3、Attach to Process 附加另一个进程进行调试,此进程可以是其它可执行文件,如果有源程序,可调入源程式调式,如无源程序,对此进程的汇编代码进行调试。

4、Toggle BreakPoint 在一行代码处设置断点,也可直接在一行代码前面的灰条处点一鼠标左键。

即可设置断点,如图1-1左侧小红点就是断点。

再次左键点一下即可取消断点。

5、Step Over进入单步调试,或者快捷键F10。

单步调试是一行行的向前运行,遇到函数不进入函数体内;而另一个快捷键F11也是单步调试,但是遇到函数会进入函数体内运行。

也可以用组合键CTRL+F10运行到光标指定点。

6、Delete All BreakPoints 取消所有的断点7、Disable All BreakPoints 禁用所有的断点,但不取消。

再次点一下菜单命令可恢复。

二、各种调试和变量窗口图2-11、最上面显示的是目前所处的进程和线程名2、左边黄色箭头指明现在调试运行到此处3、右边是调试变量窗口,有三个子窗口Autos窗口,Locals窗口,Watch1窗口,这三个窗口中前二个自动显示黄色箭头运行处的本地变量内容。

而Watch1中可手工输入变量名,系统会自动列出变量的值。

Value栏中的内容是可以修改的,比如图2-1中的循环计数变量m_dwSpinCount值是4000,如果我们调试时进入这个循环,要手工运行4000次,才能退出循环,这太麻烦,此时,可以直接鼠标左键点变量窗口中4000这个值,修改变量值为0次。

继续单步调试程序,退出循环。

当然你也可以在循环外面加一个断点,直接按F5跳出循环到断点处。

Visual Studio 2008基本调试技巧

Visual Studio 2008基本调试技巧
在调用函数的情况下,逐过程调试将执 行函数,然后跳过函数体。 F11逐语句调试 能够看到函数体内的代码逐句执行的情况。

Байду номын сангаас
加入WriteLine输出语句。
断言的使用

Debug类(命名空间System.Diagnostics) Debug.Assert(表达式,string str)
表达式:“测试条件” str:“提示消息” Debug.Assert(this.textBox1.Text.Length > 0, "输入值为空!"); 在断言中不要调用程序中的方法,避免与程序 发生功能联系。



小结



VS 2008 基本调试技巧 断点设置、调试输出、变量监视、调试堆栈、 逐过程调试、逐语句调试、使用WriteLine方法 来辅助输出调试信息。 断言Debug 测试是调试的入口,重心在于设计输入数据让 特定的问题出现的技巧。 调试不等于测试,调试重心在于修正语法错误 和逻辑错误的过程,重点在于定位问题。
VS 2008 基本调试技巧
断点设置

F9快速断点设置
调试输出

F5调试输出
变量监视
调用堆栈
逐过程调试


在断点处,如果希望继续执行程序,则 可按F5键,程序会运行到下一个断点的 代码行处。 如果要一步步查看程序的执行情况,以 及变量、属性值等,则可按F10键(逐过 程调试的快捷键)。
逐语句调试

Microsoft Visual C++ 2008 发布程序的部署问题

Microsoft Visual C++ 2008 发布程序的部署问题

Microsoft Visual C++ 2008 发布程序的部署问题VS2008编译的程序在Windows2008环境上运行时经常出现如下问题:应用程序事件日志如下:上述两个问题都解决后则可能还出现如下问题:注意:此时是调用dll出现问题了,而不是运行主程序出错。

主要问题是“找不到从属程序集Microsoft.VC90.MFC”,解决办法如下:将整个“C:\Application\Microsoft Visual Studio 9.0\VC\ redist\x86\Microsoft.VC90.MFC”拷贝到exe文件所在目录下,如果exe程序所涉及调用的dll与该exe文件不在同一目录,那么须要在dll所在目录也拷贝一份。

详细描述如下:这个问题有好多Blog和Forum已经讨论过了,但都不详尽,在具体的操作过程中还是有许多疑问。

我摘录并整合了许多网络文章,希望能够做个最终了结。

一、VC2005和VC2008编译出来的程序如何发布/lf426/archive/2008/04/12/46885.aspxVC2005和VC2008编译出来的程序放到别人的电脑上为什么有可能无法运行呢?1:Microsoft Visual C++ 2008 Express Edition可以发布软件吗?能!很多人说,因为是Express版,不是Studio,所以只是用来练习语言的,不能发布软件——错!除了没有MFC和ATL,基本上跟 .net 版本是一样的。

发布出来的,是完整的可执行文件。

2:VC 2008 (2005) 发布出来的程序必须附带上他们特定的dll文件吗?不一定。

如果目标系统是个经常升级的系统,微软已经为其打上了所需要的dll文件补丁了,不需要在软件包里面附加特定的dll文件。

特别在Vista系统中,你更是不需要VC8和VC9的dll文件。

但是在一些老版本的系统中,这些文件就是必须的。

3:VC2008和VC2005特定的dll文件是哪些?VC8: msvcm80.dll, msvcp80.dll, msvcr80.dllVC9: msvcm90.dll, msvcp90.dll, msvcr90.dll4:如何部署文件?首先,请选择release版本;在生成可执行文件(exe文件)的时候,会得到相应的部署文件(manifest文件)。

Vs2008打包安装程序

Vs2008打包安装程序

1、怎么使得程序窗口左上角和任务栏有图标,如下图所示:其实这个问题不应该放到程序打包这部分讲,只不过对于一些初学者而言,在这提下也许会有很大的帮助(想到自己刚学.net那会了,呵呵)。

方法之一的话就是先添加一个图标文件到项目中,然后切换到每个界面设计器,右键窗体的属性,在属性窗口有个Icon选项,下面的也就不用多说了吧~2、先新建一个空的解决方法,File->New->Project->Other Project Types->Visual Studio Solution->Blank Solution,这儿取个名称SetupDemo:如图:3、在解决方案中添加个项目工程,右键上图中的解决方案,点击Add->New Project,选中Windows Form Application模板,输入SetupForm,结果如下:4、给项目添加些基本信息:在上图中,右键SetupForm后单击Property或者直接双击上图中的Properties,会出现下图左侧很多选项卡,所以可以更改的东西很多,大家可以视需要而定制,这没必要赘述。

大家可以点击上图中的Assembly Information 按钮,添加项目出品公司信息,如下图所示:5、本来这应该讲添加安装部署项目了,但是对于在Windows7上开发的朋友们,还需要加上额外的一部,那就是关于程序安装后的权限问题。

大家知道,从Vista开始Windows操作系统便加入了UAC机制,所以问题就出现了:如果我们制作的程序被安装到了系统盘了会怎样?有心的会发现,当程序进行一些诸如IO操作的时候,这些都会被操作系统要求以管理员权限运行,否则所有的操作会被系统拒绝。

如果直接进入安装部署项目的操作的话,这样打包出来的安装包即便你以管理员权限运行安装了。

但是,出现在桌面上的图标快捷键右键时候却没有“以管理员权限运行这一选项”,除非你直接切换到安装目录,右键exe文件以管理员权限启动~解决方法是,右键SetupForm项目,添加一个应用程序描述文件,如下图:直接点击添加即可,这时候打开文件会出现以下内容:想必不用多说了吧,把level="asInvoker" 按调用者权限改成level="requireAdministrator"管理员权限就OK啦。

XP及win7下如何解决“visual studio 2008 试用版评估期...结束”

XP及win7下如何解决“visual studio 2008 试用版评估期...结束”

XP及win7下如何解决“visual studio 2008 试用版评估期...结束”xp下可以直接输入序列号,win7下输入序列号的框没了,对于在win7内核下的vs2008破解,和在xp内核系统下的破解是不同的.传统的破解方式:一、先安装试用版,然后在“添加或删除程序”里找到VS2008,点“更改/删除”就会看到一个输入序列号的地方,把序列号输进去,点“升级”按钮即可,Team Suite和Professional通用。

二、把ISO中的Setup/setup.sdb文件中的[Product Key],由“T2CRQGDKBVW7KJR8C6CKXMW3D”修改为“PYHYPWXB3BB2CCMV9DX9VDY8T”,之后正常安装即可但在win7和win2008R2中,第一种方法是行不通的,因为win7系统中微软遮蔽了序列号输入窗口.显示输入序列号的地方被遮蔽了。

如果安装之后需要破解,需要采用以下的方法:一、首先下载下面的补丁程序win7,win2008R2系统Vs2008补丁(cnblogs),补丁作者给的地址:二、运行到维护模式下,运行补丁程序,点击打补丁,即可看到维护模式下的出现序列号输入框,数据我下面提供的序列号即可。

以下是收集的序列号:1.Visual Studio 2008 Professional Edition: XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT2.Visual Studio 2008 Team Test Load Agent: WPX3J-BXC3W-BPYWP-PJ8CM-F7M8T3.Visual Studio 2008 Team System:PYHYP-WXB3B-B2CCM-V9DX9-VDY8T4.Visual Studio 2008 Team Foundation Server: WPDW8-M962C-VJX9M-HQB4Q-JVTDM当visual studio 2008试用版出现评估期还剩几天或已结束的提示时,可以借助此PatchVS2008工具继续使用。

Visual Studio中的debug和release版本的区别

Visual Studio中的debug和release版本的区别

Visual Studio中的debug和release版本的区别Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

Debug 和Release 的真正秘密,在于一组编译选项。

下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起Release 版错误,在此不讨论)Debug 版本参数含义/MDd /MLd或/MTd使用Debug runtime library (调试版本的运行时刻函数库)/Od 关闭优化开关/D "_DEBUG" 相当于#define _DEBUG,打开编译调试代码开关(主要针对assert函数) /ZI 创建Edit and continue(编辑继续)数据库,这样在调试过程中如果修改了源代码不需重新编译/GZ 可以帮助捕获内存错误/Gm打开最小化重链接开关,减少链接时间Release 版本参数含义/MD /ML 或/MT 使用发布版本的运行时刻函数库/O1 或/O2 优化开关,使程序最小或最快/D "NDEBUG" 关闭条件编译调试代码开关(即不编译assert函数)/GF 合并重复的字符串,并将字符串常量放到只读内存,防止被修改实际上,Debug 和Release 并没有本质的界限,他们只是一组编译选项的集合,编译器只是按照预定的选项行动。

事实上,我们甚至可以修改这些选项,从而得到优化过的调试版本或是带跟踪语句的发布版本。

哪些情况下Release 版会出错有了上面的介绍,我们再来逐个对照这些选项看看Release 版错误是怎样产生的1、Runtime Library:链接哪种运行时刻函数库通常只对程序的性能产生影响。

调试版本的Runtime Library 包含了调试信息,并采用了一些保护机制以帮助发现错误,因此性能不如发布版本。

VS2008编译C语言程序详细步骤

VS2008编译C语言程序详细步骤

Visual Studio 2008(VS2008)编译C语言方法 xp,vista,win7(32,64位)都可运行,效果很好!2011-01-01 13:31大家在学习C语言的时候接触的一般都是VC6.0。

但是VC6.0只能编译C 或者C++,不支持C#,集成度不是很高。

而且界面并不十分友好,不能自动猜测关键字,函数的参数也不能自动标示。

最关键的是,编译的时候纠错信息是全英文的,对于初学者十分不方便。

在演示编译一些简单的C程序时VC6.0可以胜任,但是在进行稍微复杂的程序编辑工作时,VC6.0就有点力不从心了。

现在微软的基于.NET的开发软件已经更新至Visual Studio 2010(VS2010)但是VS2010版本还不是最完善,所以目前为止,最流行的还是Visual Studio 2008(内部代号VC9.0,以下简称VS2008)。

大家接触VS2008一般都是从C#或者VB语言开始的,其实VS2008作为一款集成度很高的编译软件,其本身也是支持C 语言的。

大家可以用它来进行C语言的编译。

相较于VC6.0,VS2008更加的智能,更加人性化。

而且VS2008还支持windows7(VC6.0不支持),所以很多装了windows7的朋友就不用头疼了。

下面,就向大家啊演示如何使用VS2008编译C程序,本文中使用VS2008 professional版本。

1.打开VS2008,这就不用多说了吧2.打开了VS2008的主界面,然后选择,文件→新建→项目弹出如图对话框在项目类型中选择VC++→win32 然后在右侧模板中选择win32控制台应用程序,再在下面输入一个名称(项目名称,不用带.C)选择保存位置后确定好了,弹出个对话框,不管它,下一步接下来注意了,这个对话框中,应用程序类型要选择控制台应用程序,附加选项一定要选中“空项目”。

然后点完成。

然后对话框消失,回到VS主界面,这时会在左侧和右侧多了如图工具栏“解决方案管理器”,如果没有,请点击快捷键(最左边)在源文件上点右键,选择“添加→新建项”。

VS2008远程调试

VS2008远程调试

*假设调试机IP 192.168.0.182 远程机IP 192.168.0.161*远程机为调试机分配权限,使调试机可以使用远程桌面登陆到远程机器上(这样调试起来方便)。

*调试机上安装visual studio .net 2003共享调试机上的Visual Studio上的远程调试目录(以我的机器为例)C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Packages\Debugger*远程机将上面的共享目录考贝到本地,比如:d:\\Debugger*调试机共享要调试的程序所在目录,比如:D:\important\cvsroot\dv-to-dvd\bin\debug*远程机将调试机上的目录影射为本地目录。

比如:Z:\\*远程机上以命令行形式执行D:\\Debugger\msvcmon.exe –tcpip –anyuser*调试机启动vc. 打开要调试的工程。

比如dvtodvd. 选择菜单project->properties选debuging->remote settingConnection :Remote via TCP/IP (Native only)Remote machine: 192.168.0.161Remote Command: z:\dvtodvd.exe*debug->start*就可以调试了。

1.首先将要调试的应用程序拷贝至远程机,选择拷贝路径如:D:/XXX/XXX/2.将本地工作上VS2008的安装目录下的调试监控工具msvsmon.exe拷贝到远程机上,如:X:/Program Files/Microsoft Visual Studio 9.0/Common7/IDE/Remote Debugger/下的x86文件夹整个拷贝到远程机上。

3.双击远程机上的msvsmon.exe,选择tools--->Options--->Authentication Mode--->No Authentication(native only)--->OK4.VS2008设置具体如下:调试机启动VS2008. 选择project->properties然后:Configuration Properties: Debugging.Remote Command: 远程机上需要被调试的应用程序的全路径,比如:D:/XXX/XXX/urpro.exe。

OSG在VS2008下的配置安装心得

OSG在VS2008下的配置安装心得

在XP(32位)安装OSG2.8.2。

安装心得如下:一、准备安装资料包括程序(请到官方网站都可以下载)1. OpenSceneGraph-2.8.2.zip (源程序包)2. cmake-2.8.3-win32-x86.zip (安装源代码需要的工具)3. OpenSceneGraph-Data-2.8.0.zip (数据文件包)4. 3rdParty_VC9sp1_x86_x64.7z (第三方插件库:WINDOWS支持的图形库)(问题:详细作用)(rdParty只是一个统称,通常指的是某个软件所依赖的所有其它软件的集合。

例如,界面图形接口库Qt依赖于libjpeg,libmng,libpng,freetype等多种第三方库,以实现各种图形和字体格式的支持。

由于这些第三方库的存在,Qt不需要再额外编写和测试图形文件读写的代码,并且相应的功能可以随着这些第三方库的更新而更新,十分方便且稳定。

而OpenSceneGraph的第三方库主要用于实现各种模型、图形、字体文件的读写,如果需要某种格式的支持,请首先下载相应的第三方库(例如ttf格式对应freetype,hdr格式对应OpenEXR等)源代码,使用您自己的编译器生成第三方库的链接文件(DLL,LIB等),再编译OSG的对应插件;有些第三方库也会直接提供编译好的链接库文件,可以直接使用。

)友情提示:其中1、3、4可在下载,2可在/cmake/resources/software.html或/files下载,注意在下载过程中与自己使用的VC版本相对应,比如VS2008的为VC9。

二、安装过程:1. 为了统一方面,在D盘新建一个OSG目录(根据自己的情况放置),并将源程序包解压到此目录。

将各压缩包程序也解压到指定目录:D:\OSG\OpenSceneGraph (放置OSG库文件)D:\OSG\3dParty (放置图形库)D:\OSG\Data (放置演示等例子和数据)2. 用CMake生成Project & Solution files。

vs版本之间的转换

vs版本之间的转换

关于vs2005、vs2008和vs2010项目互转的总结2010-12-15 19:51有做.net的程序员和朋友曾经问过我,关于vs2005和vs2008、vs2008和vs2010、vs2005和vs2010项目互转的问题,那么关于这个问题有两层含义:一种是通过高版本的编译器打开低版本的项目,进行升级;一种是通过修改Soultion文件和Project文件,可以打开编译。

第一种方法,相信大家都可以做到。

我主张用第二种方法,这种方法灵活多变,既可以从低版本升级到高版本,又可以从高版本转换到低版本。

那么下面我给大家讲一下,通过vs2005的项目升级到vs2008项目的步骤,下面是vs2005的一项目:<一> Visual Studio 2005项目-〉Visual Studio 2008项目,Visual Studio 2008项目->Visual Studio 2005项目(1) 需要修改ListViewColor解决方案文件,将红框处版本9.00改为10.00;将Visual Studio 2005改为Visual Studio 2008,如下图:(2) 打开ListViewColor文件夹,用记事本打开ListViewColor工程文件。

将第一行添加ToolsVersion="3.5",如图所示:将MSBuildBinPath改为MSBuildToolsPath,如下图所示:现在打开ListViewColor解决方案文件,就可以打开该项目了。

(3) 如果想把改项目彻底升级到.NET Framework 3.5,可以在解决方案管理器右击工程文件-〉属性,修改目标框架,如图示:到此,vs2005项目转化vs2008项目已经成功。

如果想把vs2008项目转换成vs2005项目,可以按照逆向方法,完成项目转化。

<二> Visual Studio 2008项目-〉Visual Studio 2010项目,Visual Studio 2010项目->Visual Studio 2008项目(1) 我们以上面用到的项目为例,用记事本打开ListViewColor解决方案文件,将版本号10.00改为11.00,将Visual Studio 2008改为Visual Studio 2010,如下图:(2) 打开ListViewColor文件夹,用记事本打开ListViewColor工程文件。

VS2008基本调试技巧与UT初步

VS2008基本调试技巧与UT初步

逐语句调试
在调用函数的情况下,逐过程调试将执 行函数,然后跳过函数体。
F11逐语句调试 能够看到函数体内的代码逐句执行的情况。
加入WriteLine输出语句。
断言的使用
Debug类(命名空间System.Diagnostics) Debug.Assert(表达式,string str)
添加单元测试项目
直接在解决方案中添加一个新的项目, 选择项目类型为“测试项目”。
单元测试的基本方法是调用被测试代码 的函数,输入函数的参数值,获取返回 结果,然后与预期的测试结果进行比较, 如果相等则认为测试通过,否则认为测 试不通过。
Assert类的使用
在单元测试中,.NET提供了Assert类,用于验 证指定的功能是否满足条件。
从被测代码直接生成单元测试 添加单元测试项目
从被测代码直接生成单单元测试”选项。
在弹出的“创建单元测试”窗口中选择被测方 法,点击“确定”。
在新界面中输入需要创建的单元测试项目的名 称,然后单击“创建”按钮。
从被测代码直接生成单元测试
VS 2008 基本调试技巧与UT初步
断点设置
F9快速断点设置
调试输出
F5调试输出
变量监视
调用堆栈
逐过程调试
在断点处,如果希望继续执行程序,则 可按F5键,程序会运行到下一个断点的 代码行处。
如果要一步步查看程序的执行情况,以 及变量、属性值等,则可按F10键(逐过 程调试的快捷键)。
表达式:“测试条件” str:“提示消息” Debug.Assert(this.textBox1.Text.Length > 0, "输入值为空!"); 在断言中不要调用程序中的方法,避免与程序 发生功能联系。

vs2008使用教程

vs2008使用教程

VS2008使用教程引言Visual Studio 2008(简称VS2008)是一款功能强大的集成开发环境(IDE),被广泛用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序和移动应用程序等。

本教程将为您介绍如何使用VS2008进行开发,并提供一些常用功能和技巧的使用方法。

安装和设置在使用VS2008之前,您需要先下载并安装它。

您可以从微软官方网站或其他可信的下载源获取安装程序。

安装完成后,您需要进行一些基本设置,以配置和个性化您的开发环境。

1.启动VS2008安装程序,并按照提示进行安装。

2.完成安装后,启动VS2008,您将看到欢迎界面和开始菜单。

3.在设置对话框中,您可以选择默认的编程语言和工作区布局,还可以更改其他个性化设置,例如颜色方案和字体大小等。

创建新项目使用VS2008,您可以创建多种类型的项目,例如控制台应用程序、Windows窗体应用程序、 Web应用程序等。

下面将介绍如何创建一个新的控制台应用程序项目。

1.在VS2008的开始菜单中,选择“新建项目”。

2.在新建项目对话框中,选择“Visual C++”(或其他适当的编程语言)并选择“控制台应用程序”项目模板。

3.输入项目的名称和存放路径,并点击“确定”创建项目。

4.创建完成后,您将看到一个空白的代码文件和一个主函数。

编写代码在VS2008中,您可以使用内置的代码编辑器来编写代码。

编辑器具有很多实用的功能,如语法高亮、自动完成和错误提示等。

1.在新建项目中,打开代码文件(通常是.cpp或.cs文件)。

2.在编辑器中输入您的代码。

VS2008提供了丰富的代码片段和代码模板,可以加快编码速度。

3.保存代码文件,并使用编译器和调试器来验证代码的正确性。

编译和运行在VS2008中,您可以通过点击按钮或使用快捷键来编译和运行您的应用程序。

1.在工具栏上找到“生成”或“调试”按钮。

2.点击“生成”按钮,VS2008将使用选择的编译器编译您的代码。

VS2008环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题

VS2008环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题

转自: /wainiwann/archive/2012/10/13/2722222.htmlVS2008环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题(IIS)比较全的有关vs2008部署问题集(1):/buhuizheyangba/article/details/7220598比较全的有关vs2008部署问题集(2):/fengbingchun/article/details/6449241/////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////原文地址:/content/11/0125/17/61151_88963969.shtmlVC9编译的程序在没有装过VC9(确切的说是.Net Framework3.5)的机器上运行时,如果提示“由于应用程序配置不正确,应用程序未能启动。

重新安装应用程序可能会纠正这个问题。

”这个错误,那么就说明该程序动态链接了VC9的运行时库,(如果还用到了MFC,那么可能动态链接了VC9的MFC库,同理还有ATL库),以及缺少对应的manifest文件,程序在目标机器上没有找到这些库和配置文件,因此导致了这个错误。

出现这种情况的VC9编译器可能存在3个版本,接下来分别阐明:1、没有打过任何补丁的VS2008该版本对应的CRT/MFC/ATL库的版本号为9.0.21022.8,这个版本号在后面会用到。

这个版本的程序部署比较简单,直接把VC安装目录下的redist目录(C:\Program Files\Microsoft Visual Studio 9.0\VC\redist)中需要的库以及对应的manifest文件拷贝到执行程序同目录下,这样程序到任何机器上都能够正常运行了。

VS2008由于应用程序配置不正确,应用程序未能启动

VS2008由于应用程序配置不正确,应用程序未能启动

VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题VC9编译的程序在没有装过VC9(确切的说是.Net Framework3.5)的机器上运行时,如果提示“由于应用程序配置不正确,应用程序未能启动。

重新安装应用程序可能会纠正这个问题。

”这个错误,那么就说明该程序动态链接了VC9的运行时库,(如果还用到了MFC,那么可能动态链接了VC9的MFC库,同理还有ATL 库),以及缺少对应的manifest文件,程序在目标机器上没有找到这些库和配置文件,因此导致了这个错误。

出现这种情况的VC9编译器可能存在3个版本,接下来分别阐明:1、没有打过任何补丁的VS2008该版本对应的CRT/MFC/ATL库的版本号为9.0.21022.8,这个版本号在后面会用到。

这个版本的程序部署比较简单,直接把VC安装目录下的redist目录(C:\Program Files\Microsoft Visual Studio 9.0\VC\redist)中需要的库以及对应的manifest文件拷贝到执行程序同目录下,这样程序到任何机器上都能够正常运行了。

2、打过SP1补丁的VS2008打过该补丁后,系统中存在着两个版本的CRT/MFC/ATL库,版本号分别为9.0.21022.8和9.0.30729.1,这导致了manifest文件中记录的版本号和实际库的版本号不一致(程序要求它们的版本号一致才能运行)。

这个版本的程序部署需要两个步骤,首先要使manifest文件中依赖项的版本号与实际库的版本号一致,均为9.0.30729.1,方法是在工程设置中增加一个宏定义_BIND_TO_CURRENT_VCLIBS_VERSION,该宏定义于C:\Program Files\Microsoft Visual Studio 9.0\VC\include\crtassem.h文件中,然后重新编译程序。

关于DEBUG和RELEASE的一些问题及解决方法

关于DEBUG和RELEASE的一些问题及解决方法

[release][版本][调试]release版本下调试正常运行exe出错 - VC/MFC / 基础类10月 9th, 2010 by adminPosted in VC/MFC | No Comments »我做的一个调用dll的程序,在debug下调试和运行exe都正常在release下调试也正常,但是直接运行release下的exe就会挂掉,请高人指点一下,到底是什么原因。

程序中有调用外部工具执行解压和压缩,因为没有使用多线程,在解压缩的时候会使主框架无响应,在这样的状态下进入调用dll的模块,然后程序执行一半就挂掉了,是不是和解压缩有关呢 ?不会是跟路径有关吧?程序中使用的相对路径???跟路径无关,都是相对路径而且release下调试是通过的,能正常运行得出结果但是,直接执行release下的exe文件就挂掉了,很奇怪运行就挂掉是指,没有响应?程序崩溃?程序直接消失?没有响应的话,是某个地方阻塞掉了,可以根据程序流程来跟踪,看执行到哪里才没响应的.程序崩溃的话,看看提示是什么,再跟踪程序流程.程序直接消失的话,多半是栈溢出了.挂掉的时候attach process一下,再查看堆栈,可以定位出在哪个函数挂掉了。

<<很可能就是路径的问题release调试的时候,可以设置工作目录,其他相对路径都是基于这个工作目录release运行的时候,工作目录应该是其所在的文件夹用几个messagebox调试的看看一定是路径问题!把dll放到release一份看看。

把dll放到release 目录下,再直接运行exe文件试试.- - 路径不正确吧。

一些指针变量未初始化??字节对齐方式不对??在PostMessage或者在SendMessage处查看,我也碰到这问题,就是这么解决的.80%是相对路径,改成绝对路径试试有没有考虑过权限的问题,调试的时候程序是有DEBUG权限的,直接运行是没有这么高的权限+看下库依赖问题 depends<顶一个!<Tags: , release, 版本, 调试[release][版本][VC/MFC]急!!~~release版本出现问题 - VC/MFC / 基础类09月 17th, 2010 by adminPosted in VC/MFC | No Comments »本人的聊天程序在debug的版本下可以顺利发送和接收对方聊天消息,但是在release版本下却出现了严重问题,症状如下:第一次发送消息,对方能正常接收并显示,当第二次发送消息对方接收到消息后,也能显示,但接着程序就出错,按“调试”按钮后就进入一个汇编代码文件,按F5往下运行就弹出“无效的句柄”对话框。

Debug版本下能运行而Release下不能运行的问题总结

Debug版本下能运行而Release下不能运行的问题总结

Debug版本下能运⾏⽽Release下不能运⾏的问题总结引⾔如果在您的开发过程中遇到了常见的错误,或许您的Release版本不能正常运⾏⽽Debug版本运⾏⽆误,那么我推荐您阅读本⽂:因为并⾮如您想象的那样,Release版本可以保证您的应⽤程序可以象Debug版本⼀样运⾏。

如果您在开发阶段完成之后或者在开发进⾏⼀段时间之内从来没有进⾏过Release版本测试,然⽽当您测试的时候却发现问题,那么请看我们的调试规则1:规则1: 经常性对开发软件进⾏Debug和Release版本的常规测试. 测试Release版本的时间间隔越长,排除问题的难度越⼤,⾄少对Release版本进⾏每周1不要随意删除ReleaseASSERT和TRACE在Release 例如: ASSERT(m_ImageList.Create(MAKEINTRESOURCE(IDB_IMAGES), 16, 1, RGB(255,255,255))); 这样的代码在Debug模式不会出错,图像列表也⾃动创建了,然⽽在Release版本呢?后继使⽤m_ImageList对象只会造成程序的Crash!,因此ASSERT宏中尽量使⽤逻辑运算符作为验证。

规则 2: 不要将代码放置在仅在某种编译选项中执⾏的地⽅,对于使⽤_DEBUG等编译选项宏内部的代码必须不影响整个程序的使⽤。

规则 3: 不要使⽤规则2作为评判标准来删除ASSERT宏,ASSERT宏是个有⽤的⼯具,但容易使⽤错误. 使Debug编译模式接近Release模式如果您的Release版本存在的问题是由代码被编译器⾃动排除造成的,那么通过这个⽅法您的问题可能会重现. ⼀些问题的产⽣可能是由于不同编译选项之间预定义符号造成的,因此您可以更改编译模式下的预定义符号,从⽽使您的Debug模式接近Release模式,观察错误是否产⽣, 更改编译预定义符号⽅法如下: a.. Alt-F7打开项⽬设置,在C++/C 页⾯,选择"General"类别,更改"_DEBUG"符号为"NDEBUG".b.. 在C++/C 页⾯, 选择"Preprocessor"类别,添加预定义符号"_DEBUG"到"Undefined Symbols"栏.c.. 使⽤"Rebuild All"重新编译如果通过上⾯设置,您在Release编译模式下⾯的问题在Debug模式下重现,那么请您依据以下步骤对您的代码进⾏修改: a.. 查找ASSERT排除其中的所有重要执⾏语句,或者将ASSERT修改为VERIFY. b.. 检查"#ifdef _DEBUG" 内所有代码,排除Release模式使⽤的代码. c.. 查找TRACE 排除其中的所有重要执⾏语句. TRACE和ASSERT⼀样,仅在Debug模式下编译. 如果通过上⾯修改更正了您在Debug模式下的问题,那么您可以重新编译Release模式,⾮常有可能您可以解决先前存在的问题!. 错误的假定造成编译模式错误您是否经常性的假定您的变量或者对象被初试化成某个指定的值(可能0)?您是否假定你所有关联到的资源在应⽤程序中都存在?这些也是Debug和Release模式下不同问题产⽣的原因。

VS2008打包程序流程

VS2008打包程序流程

VS2008打包安装程序步骤1、打开VS2008,依次选择:文件-项目-其他项目类型-安装和部署-安装向导2、依次点击确定-下一步-完成。

进入如下界面3、鼠标单击应用程序文件夹,到右边空白区域依次点击鼠标右键-添加-文件,如图所示4、打开文件后选择你编写的程序在Release下所生成的exe文件和运行该文件所需要的类库文件以及其他的一些文件后点击打开,操作结果如下图所示,并将应用程序文件夹中defaultLocation中的[Manufacturer]删掉,注意中括号也一并删除。

同时将[ProductName]换成exe程序的文件名改完后形式如:[ProgramFilesFolder]\MandarinTest5、生成exe文件快捷方式并分别剪切至“用户的“程序”菜单”和“用户桌面”右边的空白区域内,结果如图所示:6、将程序的图标文件复制到该项目目录下并将该图标加入到应用程序文件夹中,如图所示7、点击用户的“程序”菜单,并右键单击exe文件的快捷方式选择属性窗口,将程序的图标加入到属性窗口中的Icon中,操作步骤如图所示:同理操作用户桌面中的exe快捷方式的图标8、右键单击工程名打开属性对话框选择系统必备,操作结果如图所示勾选如图所示选项并确定此时就可以单击生成解决方案就可以生成安装程序包了。

但是此时生成的程序包中没有卸载功能9、在应用程序项目中添加msiexec.exe,msiexec.exe这个文件在c:\windows\system32文件夹下。

添加进去后将其名字改为卸载,并生成一个快捷方式剪切到用户的“程序”菜单中,操作结果如图所示。

然后鼠标左键单击项目名查看该项目的ProductCode,然后单击用户的“程序”菜单中卸载.exe快捷方式在其Arguments中填写/x ProduceCode即/x {E845C20B-A837-41C5-A744-A1CAAEC23486}。

如图所示。

VS2008软件打包流程

VS2008软件打包流程

工程打包说明1、打包工程建立打开microsoft visual studio 2008,新建项目出现如下图1所示窗口,在项目类型栏中选择“安装和部署”,填入姓名和工程路径,这样工程就创建完成。

图1 创建工程2工程文件添加工程创建完成后出现如下图2所示界面,包括应用程序文件夹、用户的“程序”菜单和用户桌面:其中应用程序文件夹中放的是需要打包的工程包括的内容,安装完成后该路径下就包含所有放入的文件和文件夹;用户的“程序”菜单是开始中显示的快捷方式;用户桌面是桌面上摆放的快捷方式。

图2 工程文件添加2.1应用程序文件夹选中文件夹右键单击弹出快捷菜单选择添加,可以选择添加文件夹或者文件。

2.2用户的“程序”菜单将需要打包的工程生成的exe文件创建快捷方式添加进来,点击右键查看该文件的属性,在ICON中添加应用程序的图标。

如下图所示:2.3用户桌面的该内容的操作和用户的“程序”菜单的操作方式相同。

3软件生成打开“解决方案管理器”,点击右键生成解决方案,如下图所示如果出现错误,那么根据错误列表中错误指示修改工程,修改完成后重新生成解决方案。

4 腾飞调试环境打包文件的生成4.1 IDE setup的生成首先在应用程序文件夹添加所要打包的工程的exe文件,添加“工程路径\C66xEnv\C66xIDE\bin\Debug”路径下的C66xIDE.exe和C66xFRAccessor.exe,这时visual studio 会检测相关项并且自动添加。

然后,按照下图形式添加文件夹。

defaultLD—给用户提供的基础bin文件SysLoadPath—加载时生成的bin文件,自动放到该路径下Tool—out文件和rmd文件存放路径VPPA—性能分析工程相关文件4.2 DSP setup按照下图添加文件夹。

Documents—添加“程序用户手册”和“函数用户手册”Example—例程c文件,包括性能剖析例程,hello_world.c Srio 例程。

调试Release程序--Dump文件方式

调试Release程序--Dump文件方式

在 Windows 平台下用 C++开发应用程序,最不想见到的情况恐怕就是程序崩 溃,而要想解决引起问题的 bug,最困难的应该就是调试 release 版本了。因为 release 版本来就少了很多调试信息,更何况一般都是发布出去由用户使用,crash 的现场很难保留和重现。目前有一些方法可以解决:崩溃地址 + MAP 文件;MAP 文件;SetUnhandledExceptionFilter + Minidump。本文重点解决 Minidump 方式。
switch(pInput->CallbackType) { case ModuleCallback:
if(pOutput->ModuleWriteFlags & ModuleWriteDataSeg)
if(!IsDataSectionNeeded(pInput->Module.FullPath))
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资0配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高高与中中带资资负料料荷试试下卷卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试.,卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试5交写卷、底重保电。要护气管设装设线备置备4敷高动调、设中作试电技资,高气术料并中课3中试且资件、包卷拒料中管含试绝试调路线验动卷试敷槽方作技设、案,术技管以来术架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何把VS2008上编的debug、release程序在没装VS的xp机器上运

用VS2008 SP编写的MFC程序,拷贝到其他没装VS2008的机器上直接运行,肯定是不行的。

即使选择静态链接MFC,有时候系统还是会提示“应用程序配置不正确”。

这是因为程序中可能不止用到了9.0版本MFC,还可能有ATL、CRT、OPENMP等。

在自己的机器上运行时,系统会到"C:\WINDOWS\WinSxS\"文件夹查找相应的库,这个文件夹里包含了所有安装过的版本的运行库和清单文件。

如果只找9.0版本的库和清单文件,也可以到"C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86"这个文件夹。

对于只用到Release库程序:
拷贝需要的库和清单文件到exe所在目录,修改程序的清单文件,再移植就可以运行了。

修改的方法是:用Release方式编译链接程序,然后修改xxx.exe.intermediate.manifest,将其中name为Microsoft.VC90.CRT、Microsoft.VC90.MFC等的dependency块删掉,生成(不是重新生成!)项目,VS会把清单文件重新嵌入到程序中。

这样,到了目标机器上,系统就不会按照清单文件到WinSxS文件夹去查找库(当它找不到时,就会提示“配置错误”。

从“事件查看器”中,会看到加载失败的信息),而是到了该加载时才从工作目录查找。

网上很多说法都提到了拷贝dll和manifest,但如果不修改程序中嵌入的manifest的话,拷贝了也是没用的。

另外一个不需要修改清单文件的办法,是下载Microsoft Visual C++ 2008 Redistributable Package,只有几兆,到目标机器上安装就可以了。

这是vcredist_x86 for VS2008 的下载地址:
/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f 2bc1bf&displaylang=en
这是vcredist_x86 for VS2008 SP1的下载地址:
/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B 2AF5FC2&displaylang=en
两个安装程序的版本略有差别。

当然,如果只用到了9.0版的MFC,只要选择“在静态库中使用MFC”,就可以运行了。

对于用到Debug库程序:
如果你的程序用到了Debug版的运行库,那么上述库是不能解决问题的,因为它们都是Release版。

可以到"C:\WINDOWS\WinSxS\",把用到的文件夹拷贝到目标机器的WinSxS中。

不过我用的仍是修改清单文件的办法:从"C:\Program Files\Microsoft Visual Studio
9.0\VC\redist\Debug_NonRedist\x86"文件夹中,把用到的dll和MANIFEST拷贝到exe所在目录。

用Release版编译链接程序(我的程序用到了OpenCV2.0的Debug库,而该库似乎用到了DebugCRT和DebugOpenMP。

因此我的程序同时用到了Debug和Release的C Runtime),然后修改xxx.exe.intermediate.manifest,将其中的DebugCRT项目删掉,生成(不是重新生成!)项目,VS会把清单文件重新嵌入到程序中,完成!
还可以在“项目属性-清单工具-输入和输出”中将“嵌入清单”置为否,这样清单就不会被嵌入到exe中,而是被输出到了exe所在的文件夹。

打开该清单文件,将Debug库删掉,最后将exe和清单文件一起拷贝到其他计算机。

另外,如果新建一个“安装项目”,在项目上点右键-添加-合并模块,似乎可以选择一些需要的库打包进安装文件中。

安装时,这些被选上的库会被复制到WinSxS文件夹。

一切看上去都没什么问题,唯一的问题是——我这样尝试后,发现仍是“初始化失败”
总结一下吧,想要移植一个程序,首先要知道这个程序依赖那些系统库,这一点可以查看它加载了哪些模块;其次要让程序知道,在新的计算机中,是到WinSxS文件夹寻找,还是到程序所在文件夹寻找,可以通过修改清单文件做到这一点。

我的方法:直接将
C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86中的所需库文件拷到release下,生成的release版本(运用静态链接库)可以直接再任何机器上用,此做法原因是opencv调用了一些库文件,而并非自己的程序直接调用(本来就是静态调用)。

相关文档
最新文档