在VC下运行,编译器会自动查找所需的库文件,不管是静态链接还是动态链接。
但是单独打包EXE文件,如果不选静态链接MFC库,编译器不会将你程序中所用到的MFC库打包到exe文件中,自然会出错了
记得打包EXE时选静态链接就OK
用了静态链接MFC库连接exe。在VC外面可以运行了。
但是我VC里直接按F5运行,居然在原来在外面exe出错的那一行发生了错误。
简单的说用了
使用
动态链接MFC VC外EXE:不正确 VC里运行:正确
静态链接MFC VC外EXE:正确 VC里运行:不正确
静态链接库(lib)与动态链接库(dll)的比较:
首先,静态链接库与动态链接库都是共享代码的方式,也可称为程序模块化的方式;
静态链接库:
lib中的指令都被直接包含在最终的EXE中,因此exe运行时不再需要lib文件;
不能再包含其他的动态链接库或者静态库;
动态链接库:
dll与EXE文件独立存在,所以发布EXE时需要同时发布dll文件;
可以再包含其他的动态链接库或者静态库;
建议:
请最好使用动态链接库(dll)进行程序的模块化,静态链接库(lib)过时了(应用程序升级上就能看出其劣势);
你有看过任务管理器中的性能一栏么,看过你的程序所占用的资源么?是不是IDE的问题,重启下试试,另外你的头文件写法不太合习惯,一般c++中是这样导入标准库函数的命名空间的
#include<iostream>
using namespace std;
PS: 生成release的版本,而不是debug的版本,双击该目标程序运行,打开任务管理器,查看资源占用情况。。。。
为什么我编译的MFC应用程序在其他电脑上不能运行?
因为其他的电脑上没有相关的运行库,因此无法运行。 但可以这样解决,打开工程或项目的属性,在常规选项卡中设置:使用MFC作为静态链接库(不同版本的描述不尽相同,但都有静态两个字),设置后再编译就可以了。
如何在其他电脑上运行VS2005编译的DEBUG版应用程序首先,通过菜单找到关于选项查询当前VS2005的版本,然后到自己电脑"$(Windows)/WinSxS/"目录下可以看到很多长长 名字的目录。第一个"_"前为平台,这里以x86为例,接下来找到带有"MicrosoftVC80DebugCRT" 和"MicrosoftVC80DebugMFC"字样的且包含上面版本号的目录。我的电脑目录如下:
x86_MicrosoftVC80DebugCRT_1fc8b3b9a1e18e3b_8050727762_x-ww_5490cd9f x86_MicrosoftVC80DebugMFC_1fc8b3b9a1e18e3b_8050727762_x-ww_257740a4
将这两个目录拷贝到目标电脑的"$(Windows)/WinSxS/"位置,进入"$(Windows)/WinSxS/Manifests/"目录,用上面的方法找到四个文件并拷贝到目标电脑的相同目录中,我的电脑文件如下:
x86_MicrosoftVC80DebugCRT_1fc8b3b9a1e18e3b_8050727762_x-ww_5490cd9fcat以及manifest文件
x86_MicrosoftVC80DebugMFC_1fc8b3b9a1e18e3b_8050727762_x-ww_257740a4cat以及manifest文件
最后一步,进入"$(Windows)/WinSxS/Policies/"目录,找到带有"MicrosoftVC80DebugCRT"和"MicrosoftVC80DebugMFC"字样的两个目录将其拷贝到目标电脑的相同目录,我的电脑目录如下:
x86_policy80MicrosoftVC80DebugCRT_1fc8b3b9a1e18e3b_x-ww_09e017b4
x86_policy80MicrosoftVC80DebugMFC_1fc8b3b9a1e18e3b_x-ww_a193936f
到 此,所有需要的文件都拷贝结束了,运行刚刚的应用程序,显示了我们熟悉的错误信息:"This application has failed to start because XXXdll was not found Re-installing the application may fix this problem"
编写好的C程序如何才能变成EXE应用程序在其他不装有C编译系统的电脑上运行?这个要看你是用什么样的编译器
Win-TC\projects的话 里头有编译好的 exe文件,不过复制出来以后就运行不了。因为TC是16位的,而WINDOWS是32位的
要是用vc60那就简单多了。
在“工程”->“设置”中的“常规”选项卡,
Microsoft基础类:
选择“使用MFC作为静态链接库”。
这样生成的EXE文件可以在没有安装VC++的电脑上运行了。
生成的EXE文件在Debug或者Release文件夹下。
其他的编译器我不清楚
VC编译的Win32应用程序不能在Windows 7运行,win32应用程序是什么,为什么叫Win32有点莫名其妙Windows 32位应用程序。
你一定用了什么非开放的API接口,所以不能用。
电脑C盘里的应用程序能不能防在其他盘里运行啊可以,但你得修改路径,注册表,非常麻烦,如果是单个的程序,你可以找到启动的图标然后发送到桌面系统程序一般还是不要乱动,别把除了系统程序之外的程序或软件给C盘安装,很容易感染C盘中毒的
在VS2005中用VC#编译的程序为什么在其他机器运行不了
编好后当然不能就直接用了,要对程序进行打包:创建项目→项目类型→其他类型→安装和部署→安装向导。
为什么Qt编译的程序不能在XP上运行使用qt57以下的版本,在xp下依赖库和其他 *** 作系统不同,好像有个windowsdll
MFC生成的exe程序不能在其他电脑上运行怎么办depend。exe 查一查你的程序依赖那些dll copy过去,否则请 静态 + release 重新编译
在其他店(电脑城里的)下载应用程序后 为什么无法从电脑itunes上下载应用程序到iphone首先,你需要注册账户(详细教程::hibaidu/wongstephanie/blog/item/4d57da14168f4bd9c3fd78bc)
然后对电脑进行授权(打开iTunes,点击“Store”—“对这台电脑授权”)才能安装应用程序;
其次,登录以后你点击应用程序购买然后下载安装就好了;
最后,当你使用自己的电脑的iTunes库同步时,你的iphone内原有的程序也会被抹掉的。
怎么我用c++ builder60编的一个小程序在其他电脑上不能运行在程序编译的时候,你需要把程序用到东西都打包到EXE文件中,如下 *** 作:
在Options 中,把Packages--build with runtime packages前的勾去掉
把linker-- use dynamic rtl前的勾去掉
另外,如果你用了数据库功能,那么,你必须把数据库支撑文件放到运行程序的电脑中,因为数据库支撑包不能与EXE文件一起封装
错误的范例程序是要做阶乘(n! = n (n-1) (n-2) 1) 初次运行结果如下:
设定岔断点(Breakpoints)
断点就是你希望程序运行到哪暂停,断点往往就是你觉得程序可能出错的地方
设定断点的办法很简单,在你认为出错的那一行的行号前面双击即可如图:
运行debug
「Run」→「Debug As」→「Java Application」(或是按 旁边的箭头选「Debug As」→「Java Application」),还开启「Debug」视景。 开启后debug视图会有点让你不适应 关于debug的视图介绍,请参看我的另外一篇介绍----
怎样使用eclipse系列教程(1-配置自己的视图布局
进入调试模式
使用调试---查看自定义表达式的值
在本例中,我们想实时查看一下当前表达式value factorial(value - 1)到底是多少,可以如下图这样去做!
让程序一步一步慢慢运行!
step into(步入) 快捷键是 F5
step over(步过) 快捷键是 F6
step return (返回) 快捷键是 F7
继续执行
我们已经做过程序逐步除错,还可以继续做下去,但是每次呼叫 factorial(),每一列程序代码都得跑一遍,实在有点烦。
可以改成让程序一直跑,直到碰到岔断点。要这样做只要按「Debug」视图中 Resume按钮。
在这样做之前,也可以设定去监看我们想要监视的变量。在编辑器中对该变量按右键,选 Watch 的选项,把该变量加到「Expressions」视图中。
现在点 Resume 按钮,程序会继续执行,直到碰到下一个岔断点,看一下 value 的值为 3 之后,会发现扔然在同一个 factorial()之内,只要重复不断按 Resume 按钮,可以看出 value 值的变化。
设定岔断点的 Hit Count
如果从程序开始启动计算,这个 factorial()方法要跑 6 次,所以需要按 6 次 Resume 按钮;也可以设定 Hit Count 来节省时间
分析问题出现的原因!
修改测试,完成debug!
尝试以下办法:
右键VS2013图标,选择以管理员权限运行。
关闭VS2013,将工程目录复制到D盘,重新在D盘打开工程,完整重新编译后运行。
另外还有一个可能,注意查看编译过程是否有错误警告,如果有,需要先完善代码。
我测试了一下,RELEASE编译,即使空内容获取也没有问题。
我觉得,应该是你的项目中RELEASE版本的优化做的太多,或者程序其它原因造成的。
因为版本和环境差异,建议你自己先试验一下:
建立一个类似的MFC对话框工程,简单一个按钮一个编辑框,使用以上代码,RELEASE编译,看看有没有问题,如果没有,对比一下RELEASE版本的优化参数有什么不同(有就调整),如果没有不同,那么应该是你程序其它代码干扰的问题了,这种干扰问题很麻烦,只能是熟悉代码的情况下进行分析优化,没有太好的建议。
写的太烂。
判断两个CString是否相等不是很简单吗?
CString a, b;
方法1:if(a == b) {}
方法2:
int m = aGetLength(), n = bGetLength();
bool equal = true;
if(m == n)
{
for(int i = 0; i < m; i++) if(a[i] != b[i]) { equal = false; break; }
}
你后面的文件写入是什么意思?
建议先把要写入的字符放到数组后统一写入,不要放在for循环里面。
以上就是关于用mfc写了一个基于单文档的程序,在vc里面运行很好没有错误,可是为什么在Debug里打开.exe文件没反应全部的内容,包括:用mfc写了一个基于单文档的程序,在vc里面运行很好没有错误,可是为什么在Debug里打开.exe文件没反应、c++编出的程序运行很卡、为什么我编译的MFC应用程序在其他电脑上不能运行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)