为什么我用vc写的程序在没有装vc的机子上就不能运行。。。。。

dfyx 2003-11-25 09:27:23
为什么我用vc写的程序在没有装vc的机子上就不能运行
说找不到链接库?
...全文
121 点赞 收藏 15
写回复
15 条回复
dfyx 2003年12月02日
好像在release方式下,这一段代码不执行

for(int k=0;k<30;k++)
{

pdc->SetROP2(R2_NOT);
pdc->Rectangle(250+5*k,50+90*i,260+5*k,60+90*i);
for(int j=1;j<10000;j++)
for(int t=1;t<2000;t++);
pdc->Rectangle(250+5*k,50+90*i,260+5*k,60+90*i);

}

整个函数是这样的:

void CTestDoc::reader(CDC *pdc, CDC *pdc1, int i)
{

clock_t start,end;
double var,var1;
CString s,s1,s2;
CPen pen(1,2,RGB(255,0,0));
CPen *oldpen=pdc1->SelectObject(&pen);
CBrush bursh1(RGB(255,0,0));
CBrush *oldbrush1=pdc->SelectObject(&bursh1);
start=clock();
var=(double)(start-0)/1000;
s.Format("%6.3f",var);
pdc1->TextOut(550,40+40*i,s);//输出开始时间
pdc1->TextOut(620,40+40*i," ");
pdc->SetROP2(R2_NOT);//设置pdc的印象模式
for(int k=0;k<30;k++)
{
pdc->Rectangle(250+5*k,50+90*i,260+5*k,60+90*i);
for(int j=1;j<10000;j++)
for(int t=1;t<2000;t++);//延时
pdc->Rectangle(250+5*k,50+90*i,260+5*k,60+90*i);

}

s1.Format("%d",data);
pdc1->TextOut(700,40+40*i,s1);


end=clock();
var1=(double)(end-0)/1000;
s2.Format("%6.3f",var1);
pdc1->TextOut(620,40+40*i,s2);//输出结束时间
pdc1->SelectObject(oldpen);
pdc->SelectObject(oldbrush1);

}
回复 点赞
dfyx 2003年12月02日
我写的是一个多线程的绘图程序
每按一下按钮创建一个线程,就在视中绘图,图形从左边慢慢移到右边,并且打印出
他开始移动的时间和移动结束的时间,这些线程是互斥的。
在DEBUG方式下,它的功能和我希望的一样
但在release编译的那种方法下,
程序一运行就打印出了开始时间和结束时间,即开始时间和结束时间是一样的,
并且根本没有图形的移动。
只是显示出了OnDraw(CDC *pDC)函数中的初始界面
为什么呢?
回复 点赞
ISunwu 2003年12月02日
什么地方不一样?
回复 点赞
dfyx 2003年12月02日
我是用这种方法编译的:
2、把应用程序做成Release版的应用程序,具体步骤如下:
菜单Build->SetActiveConfigure,在弹出对话框中选择Win32Release,点OK,然后
菜单project->setting ,在弹出对话框的General属性页的Microsoft Foundation classes
下拉列表中选择User MFC in static Library,然后rebuildall,把生成的Release目录下


但它的功能确和我希望的不一样,而在debug下它却可以实现我希望的功能,
有高手知道这是为什么吗?
回复 点赞
ljzcom 2003年12月02日
用RELEASE来编译
回复 点赞
sunsys 2003年11月28日
up
回复 点赞
hardstudylulin 2003年11月28日
用Release编译一个版本试试
如用debug版本,需如下设置:
Project->Setting->General->Microsoft Foundation classes->User MFC in static Library
回复 点赞
Ariesman 2003年11月28日
用Depends打开你的应用程序看需要哪些动态连接库
回复 点赞
u2m 2003年11月28日
1.Release下编译
2.静态链接编译
工程->设置->General->Microsoft Foundation classes->User MFC in static Library
回复 点赞
casio 2003年11月28日
静态链接下Release方式编译
回复 点赞
vcforever 2003年11月25日
1、将程序用到的动态连接库拷贝到另一台机器上一份,就可以保证程序的正常运行
2、把应用程序做成Release版的应用程序,具体步骤如下:
菜单Build->SetActiveConfigure,在弹出对话框中选择Win32Release,点OK,然后
菜单project->setting ,在弹出对话框的General属性页的Microsoft Foundation classes
下拉列表中选择User MFC in static Library,然后rebuildall,把生成的Release目录下
的可执行文件拷贝到另一台机器上即可
3、用Installshield或其他工具制作程序安装盘,把程序需要的所有资源都打包,成功后
用安装盘在另一台机器上安装即可

希望对你有所帮助!
回复 点赞
immensity 2003年11月25日
把mfc42.dll或mfc42d.dll copy 到程序同一文件夹看看
回复 点赞
richie_cn 2003年11月25日
还有静态链接后,你要用Release编译的这样才行!
回复 点赞
huanyun 2003年11月25日
工程->设置->General->Microsoft Foundation classes->User MFC in static Library
回复 点赞
huanyun 2003年11月25日
编译得时候使用静态编译
回复 点赞
发动态
发帖子
进程/线程/DLL
创建于2007-09-28

6376

社区成员

4.9w+

社区内容

VC/MFC 进程/线程/DLL
社区公告
暂无公告