【转】VS2005编译VC++非托管代码(无需依赖.Net Framework即可运行)
2009-08-05 21:15
302 查看
原文:http://flysky.fm1062.com/post/20090121-1.aspx
在VS2005里开发的VC++程序在编译的时候,微软默认会加入自己的 .Net Framework (方便推广自家产品),让你的VC++程序依赖它,这就导致程序编译后,无法跟往常一样直接打包,在别的机器就能正常运行。如果加入了.Net Framework ,安装包就会非常大。以下方法很好的解决了这个问题,通过以下两种方法可以用VS2005将VC++程序编译为不需要依赖.Net Framework就可以直接运行的程序了。
方法一:工程属性->C/C++->代码生成: “运行时库”处选择
Multi-threaded (/MT) 或 Multi-threaded Debug (/MTd)
不要选 Multi-threaded DLL (/MD) Multi-threaded Debug DLL (/MDd)
方法二:在你的VS安装目录里如下路径
/Microsoft Visual Studio 8/VC/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT
下找到下列文件:
msVCm80d.dll
msVCp80d.dll
msVCr80d.dll
Microsoft.VC80.DebugCRT.manifest
把这几个文件拷贝到目标机器上,与你编译后的可执行程序放置在同一文件夹,或者放到system32下,就可以让目标机器运行该程序了。
2.VC++带模板函数时能编译不能连接,显示连接错误“error LNK2019: 无法解析的外部符号”
解决方法:用模板的时候,把声明和实现放在一个文件里。因为模板的机制决定了不可能把模板的CPP象其它方式(不用模板)一样编译成一个obj,数据类型都是程序中用到时才会知道的,这时连接的函数名也会因类型不同而不同,所以多数编译器都要求写在一个文件中。
3.如果在VC++2005的程序中使用UNICODE字符集的API等函数,可以在项目属性->配置属性->字符集处选“使用UNICODE字符集”,如果只用ASCII码,就选“未设置”即可!
在VS2005里开发的VC++程序在编译的时候,微软默认会加入自己的 .Net Framework (方便推广自家产品),让你的VC++程序依赖它,这就导致程序编译后,无法跟往常一样直接打包,在别的机器就能正常运行。如果加入了.Net Framework ,安装包就会非常大。以下方法很好的解决了这个问题,通过以下两种方法可以用VS2005将VC++程序编译为不需要依赖.Net Framework就可以直接运行的程序了。
方法一:工程属性->C/C++->代码生成: “运行时库”处选择
Multi-threaded (/MT) 或 Multi-threaded Debug (/MTd)
不要选 Multi-threaded DLL (/MD) Multi-threaded Debug DLL (/MDd)
方法二:在你的VS安装目录里如下路径
/Microsoft Visual Studio 8/VC/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT
下找到下列文件:
msVCm80d.dll
msVCp80d.dll
msVCr80d.dll
Microsoft.VC80.DebugCRT.manifest
把这几个文件拷贝到目标机器上,与你编译后的可执行程序放置在同一文件夹,或者放到system32下,就可以让目标机器运行该程序了。
2.VC++带模板函数时能编译不能连接,显示连接错误“error LNK2019: 无法解析的外部符号”
解决方法:用模板的时候,把声明和实现放在一个文件里。因为模板的机制决定了不可能把模板的CPP象其它方式(不用模板)一样编译成一个obj,数据类型都是程序中用到时才会知道的,这时连接的函数名也会因类型不同而不同,所以多数编译器都要求写在一个文件中。
3.如果在VC++2005的程序中使用UNICODE字符集的API等函数,可以在项目属性->配置属性->字符集处选“使用UNICODE字符集”,如果只用ASCII码,就选“未设置”即可!
相关文章推荐
- VS2005编译VC++非托管代码(无需依赖.Net Framework即可运行)
- VS2005/2008编译VC++非托管代码(无需依赖.Net Framework即可运行)
- 在VS2005 环境下面使用.NET Framework 1.1 进行编译
- 在VS2005 环境下面使用.NET Framework 1.1 进行编译
- VC2005做的EXE程序如何在没安装VS2005(FrameWork)的机器上运行?
- 在VS2005 环境下面使用.NET Framework 1.1 进行编译
- 用VS编译出不依赖VC运行库的可独立运行的程序
- 在VS2005 环境下面使用.NET Framework 1.1 进行编译
- 基于Ado.net Entity Framework 通过系统运行时动态编译实现数据表字段的增删
- 用VS编译出不依赖VC运行库的可独立运行的程序
- ogre-1.7.0 + cegui-0.7.1 + vs2005 编译运行若干问题
- win7运行第一个opencv程序,基于opencv3.2,官方vc14编译版本,QT5.8 VS2015平台
- windows 8.1安装VS2005出现安装失败:未能安装.NET framework 3.5解决方案
- 在程序中获得驱动器盘符的方法,附源程序,可在VC7.1下编译运行
- 【踩坑速记】二次依赖?android studio编译运行各种踩坑解决方案,杜绝弯路,总有你想要的~
- 如何设置要运行的.NET Framework的版本?
- VC中编译、运行程序一些知识
- vc.net中MFC静态与动态链接问题与release方式编译
- 编译Boost 详细步骤 适用 VC6 VS2003 VS2005 VS2008 VS2010
- 让.Net程序脱离.Net Framework框架运行(转)