如何把VS2008上编的debug、release程序在没装VS的xp机器上运行
- 格式:doc
- 大小:40.50 KB
- 文档页数:2
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跳出循环到断点处。
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文件)。
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下输入序列号的框没了,对于在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版本的区别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 包含了调试信息,并采用了一些保护机制以帮助发现错误,因此性能不如发布版本。
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主界面,这时会在左侧和右侧多了如图工具栏“解决方案管理器”,如果没有,请点击快捷键(最左边)在源文件上点右键,选择“添加→新建项”。
*假设调试机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。
在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。
关于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上编的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调用了一些库文件,而并非自己的程序直接调用(本来就是静态调用)。