【高分求助】VC++ 2005写的win32控制台程序只能在自己的机子上运行????~!

alxen 2006-12-08 02:21:25
我用VC++ 2005 做的win32 控制台应用程序,不管是生成的Debug版还是Release版的exe文件,都只能在我的机子上运行,一到别人的机子上点击打开就提示“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。”
奇怪的是我写的仅仅是简单的控制台程序,只有一个exe文件,又不是带一大堆dll文件的大软件,怎么还要安装??好奇怪。
是我的VC++的设置问题么?该怎么解决呢?
请熟悉的朋友指点一下。
...全文
1248 68 打赏 收藏 转发到动态 举报
写回复
用AI写文章
68 条回复
切换为时间正序
请发表友善的回复…
发表回复
alxen 2006-12-09
  • 打赏
  • 举报
回复
htqx(航天奇侠)
当然最简单的发布方法就是设置静态连接标准库dll。
项目属性 --> c/c++ --> 代码生成 --> 运行时库
1。多线程(/MT) //静态
2。多线程调试(/MTd) //静态
3。多线程 DLL (/MD)
4。多线程调试 DLL (/MDd)
单个程序文件虽然增大,但是比拷贝几个dll要小得多,方便传播。
--------------------------------------------------------------
先谢了,我试试哈。
shunan 2006-12-09
  • 打赏
  • 举报
回复
so hot!
mark it
htqx 2006-12-09
  • 打赏
  • 举报
回复
关于设置的东西,最好参考msdn,里面都有详细的介绍。
大家似乎都懒得看帮助呢。
htqx 2006-12-09
  • 打赏
  • 举报
回复


大家看来没有使用vc++2005呢。
vc++2005 使用xml定位dll技术,在一个系统中可以保留相同的dll的不同版本。只是,生成程序的时候,如果要在别人的机子上运行,就要拷贝相关的dll,而且拷贝的原则有点特别。
目录结构是这样的:

--我的程序.exe
--我的程序.manifest
--我使用的dll
-----我使用的dll.dll
-----我使用的dll.manifest

manifest就是xml定位文件,默认是直接内嵌入程序里面的。

当然最简单的发布方法就是设置静态连接标准库dll。

项目属性 --> c/c++ --> 代码生成 --> 运行时库
1。多线程(/MT) //静态
2。多线程调试(/MTd) //静态
3。多线程 DLL (/MD)
4。多线程调试 DLL (/MDd)

单个程序文件虽然增大,但是比拷贝几个dll要小得多,方便传播。


txdog 2006-12-09
  • 打赏
  • 举报
回复
恩,看来基础很重要,浮躁不得。我什么都不希望,只是希望50岁了还能编程。
alxen 2006-12-08
  • 打赏
  • 举报
回复
鉴于朋友们对我的无私帮忙,特意从偶那可怜的430总分里再拿30分出来感谢朋友们。
现在我把软件的所有源代码下载链接贴出来。请朋友们看看。地址是我在blogbus的空间。
http://alxen.blogbus.com/files/1165586132.rar
-------------------------------------
这本来是我最初发表在电脑爱好者论坛的文章,最初是用TC 2.0做的英文版1.0的,现在逐步做到了5.0中文版,用VC++ 2005编译。
本着交流学习的目的和大家分享。
这个下载链接包含了5.0中文版的全部源代码。
里面包含的exe文件是在VC++ 2005里创建的 emptyproj 项目里生成的。所以可以在别的机子上运行的。
不过在win32 控制台项目里生成的exe文件就不能在别的机子上运行了。
感谢朋友们不吝赐教。
alxen 2006-12-08
  • 打赏
  • 举报
回复
antonyhome(鲜の每日C)
应该是 TomMax(笑望人生) 所说的原因
不过,应该可以设置为静态的吧
楼主能不能把编译的参数贴出来看看
--------------------------------------------
感谢各位帮忙,这是我的编译信息。

------ 已启动全部重新生成: 项目: 梦幻情缘5.0, 配置: Debug Win32 ------
正在删除项目“梦幻情缘5.0”(配置“Debug|Win32”)的中间文件和输出文件
正在编译...
love5.0.cpp
.\love5.0.cpp(68) : warning C4996: “strcpy”被声明为否决的
C:\Program Files\Microsoft Visual Studio 8\VC\include\string.h(73) : 参见“strcpy”的声明
消息:“This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”
.\love5.0.cpp(72) : warning C4996: “strcpy”被声明为否决的
C:\Program Files\Microsoft Visual Studio 8\VC\include\string.h(73) : 参见“strcpy”的声明
消息:“This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”
.\love5.0.cpp(182) : warning C4996: “fopen”被声明为否决的
C:\Program Files\Microsoft Visual Studio 8\VC\include\stdio.h(234) : 参见“fopen”的声明
消息:“This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”
正在链接...
正在嵌入清单...
生成日志保存在“file://c:\Documents and Settings\lei\My Documents\Visual Studio 2005\Projects\梦幻情缘5.0\梦幻情缘5.0\Debug\BuildLog.htm”
梦幻情缘5.0 - 0 个错误,3 个警告
========== 全部重新生成: 1 已成功, 0 已失败, 0 已跳过 ==========
------------------------------------------------------------------------
有三个警告,但是也没有问题呀,程序运行也没有问题呀
就是在别的机子上不行。
alxen 2006-12-08
  • 打赏
  • 举报
回复
非常感谢各位热心帮助和提示。
晚上有点事,现在才回来。
等我先看看各位的留言再说哈。
再次感谢各位!
--------------------------------
郁闷的是VC+ 2005的设置项太多了,具体都不知道啥意思,一不小心就编译不了了。
偶刚学VC++,还不太会用呢。
owlling 2006-12-08
  • 打赏
  • 举报
回复
可移植和跨平台的概念就不要争论了,见仁见智吧、。估计lz也只能是x86的windows环境。

==================================
欢迎访问我的个人主页:http://www.lingjie.net/
==================================
pass86 2006-12-08
  • 打赏
  • 举报
回复
可移植和跨平台是不一样的啊,
搂主的问题估计是链接库的问题,就如静态链接和动态链接,动态链接就需要库(如.dll)的支持,所以拿别机器上可能不一定运行。
owlling 2006-12-08
  • 打赏
  • 举报
回复
hoho,。ls真够胡搞的。。。。

==================================
欢迎访问我的个人主页:http://www.lingjie.net/
==================================
王国凡 2006-12-08
  • 打赏
  • 举报
回复
下班了, 准备打乒乓球去了, 大家要注意保持身体健康哦.
bye ...
王国凡 2006-12-08
  • 打赏
  • 举报
回复
> antonyhome(鲜の每日C) ( ) 信誉:100 Blog 2006-12-08 17:46:55 得分: 0
> owlling(owlman)
> 楼主其实说明了在一些情况下的编译/链接选项可以运行
>我们实际上是要找出VC++ 2005 默认选项与以前的有什么差别
---------------------------------------
OK, 这个说法是正确的 , 大家继续, 不打绕了 .
owlling 2006-12-08
  • 打赏
  • 举报
回复
哦,好像他说的是以前的一个项目吧,我认为lz还不至于会更改编译器的某些选项。我觉得他可能两次移植的目标机器是不同的,或者两次的程序涉及的运算啊库啊有所不同的。这只能猜测了。

==================================
欢迎访问我的个人主页:http://www.lingjie.net/
==================================
antonyhome 2006-12-08
  • 打赏
  • 举报
回复
owlling(owlman)

楼主其实说明了在一些情况下的编译/链接选项可以运行
我们实际上是要找出VC++ 2005 默认选项与以前的有什么差别
owlling 2006-12-08
  • 打赏
  • 举报
回复
晕,我也看了下那个文件,正想说这话,。。

==================================
欢迎访问我的个人主页:http://www.lingjie.net/
==================================
antonyhome 2006-12-08
  • 打赏
  • 举报
回复
sgnaw(李逍遥) 给的那个是预编译头的问题,连可执行程序都生成不了

这个是已经生成可执行程序了
owlling 2006-12-08
  • 打赏
  • 举报
回复
ls有没有个方向啊?lz没有说明两台怎么样的机器,怎么样的环境,你在哪写编译选项上下功夫啊?

==================================
欢迎访问我的个人主页:http://www.lingjie.net/
==================================
antonyhome 2006-12-08
  • 打赏
  • 举报
回复
因为我也没有vc++ 2005,所以只能跟据以前出现的经验来猜则是否 静态链接 或者 CLR 的问题
因为不知道vc++ 2005的默认纺译选项是怎么样的,所以叫楼主把编译选项贴出来以方便定位

相信大家都不是想把楼主拿来试验
王国凡 2006-12-08
  • 打赏
  • 举报
回复
我查了一下修改 Win32 Console 的编译选项, 但目前还没有调好, 请参考下面的文章:
http://www.gamedev.net/community/forums/topic.asp?topic_id=423527
因为要拿到别的 PC 上测试, 不太方便.
加载更多回复(48)

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧