VS2017 DLL动态库使用教程【七】为什么我的程序不能在别人电脑运行

考虑一个很最最最简单的程序:

#include <stdio.h>
#include <Windows.h>
int main()
{
	printf("你好\n");
	system("pause");
	return 0;
}

将其编译,得到一个*.exe文件。

在本地自然可以顺便运行,有时候你刚刚做完一个这样的练习,迫不及待地要向朋友炫耀一下。一脸淫笑的你守在QQ旁正期待着赞扬的词汇,一边又脑补一下朋友的崇拜,可时间似乎凝固了,仿佛过了一个世纪后——“你发的这东西我怎么打不开啊?”

 

这是一个严重的问题!

你开始是质疑,是困惑,你觉得他脑子有问题连exe程序都打不开,又或觉得是win太复杂了,他不太适合给这些巨婴用,也许我应该做一个从新开发一个操作系统,然后吊打微软收购谷歌....正当你思考这些的时候,一张截图突然丢过来:

你震惊了,你搞不懂他为什么会发生这种情况,他已经超出了的知识范畴,至少你翻遍课本也找不出个解决方案。

你顿时倍感失落,发现竟然自己竟如此无力,刚刚还在思考等到驻进硅谷后给我五姑姑二弟的小侄子安排个什么工作好,顿时梦想破灭了,就如被戳破的肥皂泡,一切都成了过眼烟云....

好了,做梦结束,我没有什么朋友,上边的错报是我用win7虚拟机运行的结果。

 

为什么会这样呢?

原因是vs默认为动态编译。

在之前的教程里我们学了静态编译与动态编译的区别,我再把他搬过来:

静态编译在程序编译时dll会被连接到目标代码中,程序运行时将不再需要该静态库

动态编译在程序编译时dll并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。

 

因为我的虚拟机没有安装vs,电脑找不到程序使用的这个库(这个库是vs自带的),所以就没办法运行。

我们只需设置为静态编译即可,让dll写进exe内,没有外部库也可以运行。

然后重新编译即可。

对于vs来说:

静态编译/MT,/MTD 是指使用libc和msvc相关的静态库(lib)。

动态编译,/MD,/MDd是指用相应的DLL版本编译。

其中字母含义  d:debug    m:multi-threading(多线程)    t:text代码    d:dynamic(动态)

 

值得注意的是,使用静态编译回让程序变大

 

  • 17
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
当在其他电脑运行一个.exe文件时,如果出现了"无法定位程序输入点于动态链接库"的错误提示,这通常是因为目标电脑上缺少了所需的动态链接库文件。这个错误的提示表明需要的库文件ucrtbase.terminate没有被找到。要解决这个问题,你可以按照以下步骤进行操作: 1. 确认目标电脑上是否已安装了相应的运行时库。如果目标电脑上没有安装该库,则可以尝试下载并安装适合目标电脑运行时库。在这个例子中,缺少的是msvcr80.dll。你可以在微软的官方网站上下载适用于你的操作系统版本的Microsoft Visual C++ Redistributable Package,然后安装它。 2. 如果已经安装了运行时库,但问题仍然存在,你可以尝试将缺失的库文件复制到目标电脑的指定目录中。首先,在正确的来源电脑上找到msvcr80.dll文件,然后将其复制到目标电脑的系统目录(通常是C:\Windows\System32)或应用程序所在的目录。然后,尝试重新运行.exe文件,看看问题是否解决。 总结起来,解决"无法定位程序输入点于动态链接库"的问题的关键在于找到缺失的动态链接库文件并将其安装或复制到正确的位置。希望这些方法对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [无法定位程序输入点于动态链接库修复解决方法](https://blog.csdn.net/weixin_36014846/article/details/118476126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [无法定位程序输入点 于动态链接库怎么办](https://blog.csdn.net/weixin_36127082/article/details/117219022)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值