VS编译完的工程,提示缺少某个dll文件
问题:最近用visual studio写了一个小功能,编译完给别人用发现需要依赖dll文件。编译的时候默认用的是动态链接,网上查了下,都是教怎么创建动态库或者静态库的,不是我需要的,干脆分享一下,很简单。
解决方法:打开项目属性,选择"C/C++"->“代码生成”->“运行库”,把它改成多线程(/MT)或者多线程调试(/MTd),改成静态以后就不需要依赖dll文件了,可单独运行,无非就是exe文件大了点。
顺便记录一下创建静态库的方法:
- 创建静态库项目:在Visual Studio中创建一个新的静态库项目。这将允许你将代码编译成
.lib
文件。 - 添加源文件:将你的C代码源文件添加到静态库项目中。这些文件将被编译成静态库的一部分。
- 编译静态库:编译静态库项目,生成
.lib
文件。这个文件包含了你的代码的编译后的版本。 - 修改主项目设置:在你的主应用程序项目中,将静态库项目的输出(
.lib
文件)添加到链接器的输入中。这可以通过以下步骤完成:- 右键点击你的项目,选择“属性”。
- 在“链接器”->“输入”中,添加
.lib
文件到“附加依赖项”。 - 在“链接器”->“常规”中,添加包含
.lib
文件的目录到“附加库目录”。
- 包含头文件:确保你的主项目包含了静态库的头文件。这可以通过在项目属性的“C/C++”->“常规”中添加包含目录来实现。
- 使用静态库:在你的主项目中,通过包含相应的头文件来使用静态库中的函数和变量。
- 编译主项目:编译你的主项目,这将把所有的代码,包括静态库的代码,链接到一个单独的exe文件中。
- 测试:确保测试你的exe文件,以验证所有的功能都按预期工作,并且没有丢失任何依赖。
- 分发:现在你可以将exe文件分发给客户,它应该不依赖于任何外部的dll文件,因为所有的依赖都已经静态链接到exe中了。