设置VS编译选项使程序不需要带DLL在任意Windows系统上正常运行

背景

初学编程的时候,那时使用的开发环境是VC6.0。使用VC6.0编译的控制台程序或者是DLL,直接编译出来就可以在其他平台上运行或是调用,不需要额外加载运行库DLL等等。使用VC6.0编译出来的MFC程序,编译的时候设置下在静态库中使用MFC,即将MFC所需的DLL组件静态编译到程序里,这样程序在任一平台上运行,也不需要额外附加MFC所需的DLL文件。

后来,由于跟随大流,VC6.0慢慢地就很少使用,转而使用VS2010、VS2012、VS2013、VS2015,甚至现在VS2017也有了。使用VS系统的开发环境,功能方面确实比较全面,提升开发效率。但是,伴随着VC6.0一些习以为常的习惯,例如编译的设置等,都悄无声息地都露着区别。所以,本文就是教你在使用VS系列开发环境的时候,怎么设置编译选项,使得生成出来的程序可以直接在其他电脑上运行,就像VC6.0一样,不需要额外DLL文件。

步骤

1. 针对VS上编译控制台程序和DLL程序的编译设置

之所以把控制台和DLL程序的编译设置放在一起,是因为它们的设置都已一样的。现在,我们以VS2013开发环境为例,想大家描述一下操作步骤。

在打开项目工程之后,右击项目工程,选中并点击“属性”,打开属性页。

1> 设置兼容XP

在“平台工具集”里选择“Visual Studio 2013 - Windows XP (v120xp)”,即带有“Windows XP (v120xp)”字样的选项,这表示程序兼容XP系统,可以正常在XP系统下运行。

2> 静态编译运行库

接着上面操作,点击左侧“C/C++”前面的三角形标号,展开选项;然后,点击“代码生成”选项,便可以在右侧的页面看到“运行库”的默认值是“MDd”。如果此时,你的项目是Debug模式的,则选择“MTd”,若是Release模式的,则选择“MT”。其中MT是“Multithread, Static Version”的缩写,即多线程静态版本;d是“Debug”的缩写,即Debug模式。

根据上面两步操作:设置XP兼容和静态编译运行库,这样编译出来的控制台程序和DLL程序就能直接在Windows系统上直接加载运行了。

2. 针对VS上编译MFC程序的编译设置

对于MFC程序,除了上面两步操作之外。(注意:除了上面两步操作之外,也就是说,MFC程序的编译也要进行上面两项的操作。)还需要额外做一步操作,就是在“MFC的使用”选项中设置“在静态库中使用MFC”。这样,VS开发环境就会把MFC所需的DLL文件都静态编译到程序里,这样,生成的文件也自然会变大。但是,这样程序就可以直接在其他Windows计算机上运行了,而不需要额外加在其他文件。

总结

上述,罗列了控制体程序、DLL程序以及MFC程序在VS系列开发环境的编译设置,大家按照以上操作,就可以编译出更加便于使用的程序出来。

参考

参考自《Windows黑客编程技术详解》一书

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
nvspcap.dll是与NVIDIA显卡驱动程序相关的动态链接库文件,它通常用于启动NVIDIA捕捉服务。 当系统在启动或运行程序时出现“nvspcap.dll没有被指定在Windows运行”的错误提示,可能有以下几个原因: 1. 该动态链接库文件已经被删除或损坏。解决方法是重新安装NVIDIA显卡驱动程序。首先,我们需要卸载当前的驱动程序。打开“控制面板”,找到“程序”或“卸载程序”,然后找到NVIDIA驱动程序并卸载。接下来,我们可以从NVIDIA官方网站下载最新版本的驱动程序,并按照安装向导进行安装。 2. 注册表项损坏。注册表是Windows操作系统的重要组成部分,负责存储有关软件和硬件的配置信息。如果注册表项与nvspcap.dll有关的信息损坏或丢失,就会出现错误提示。我们可以使用Windows的“注册表编辑器”来修复这些问题。首先,打开运行窗口(Win + R),输入“regedit”并回车,这将打开注册表编辑器。然后,找到“HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\NvContainer\”路径下名为“RecoveryService”的注册表项,删除它。 3. 第三方冲突。其他与nvspcap.dll冲突的第三方程序可能会导致错误。要解决此问题,我们可以尝试更新或卸载与NVIDIA驱动程序冲突的应用程序。 总结来说,解决nvspcap.dll没有被指定在Windows运行的问题,我们需要重新安装NVIDIA显卡驱动程序、修复注册表项或解决第三方冲突。如果以上方法都不奏效,建议联系NVIDIA技术支持或寻求专业人士的帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值