VC2008 ATL控件 去掉运行库依赖
2011-11-29 16:48
253 查看
用VC++2008开发ATL COM控件,由于功能简单,为了能让控件不依赖于VC++运行库,做了下列设置:
1、设置“Use of ATL”为“Static Link to ATL”,这样就不需要ATL90运行库
2、第一步完成后编译,发现还依赖于MSVCR90(d).DLL,可先设置“Use of MFC”为“Use MFC in a Static Library”,然后编译,不用理会编译警告,然后再改回“Use Standard Windows Libraries”,再编译,就不依赖于MSVCR90.DLL了。
查看VC++工程,发现其原因是编译选项RuntimeLibrary默认是3(MFC 动态),经过改动后就变为1,所以该问题实际上是VC++界面上的选型和实际默认值不一样,以上的第2步不需要多次编译应该也行,只需要先改为“Use MFC in a Static Library”,点“应用”,然后马上改为“Use Standard Windows Libraries”,这样就把默认值改为显式指定了。
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""$(IntDir)""
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;_USRDLL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3" ---> 1
UsePrecompiledHeader="2"
WarningLevel="4"
DebugInformationFormat="4"
/>
第2步的方法其实是绕开VC++2008的一个BUG,原文地址在 http://gccfeli.cn/2010/03/vs2008-msvcr90-dll-dependency-resolve.html
1、设置“Use of ATL”为“Static Link to ATL”,这样就不需要ATL90运行库
2、第一步完成后编译,发现还依赖于MSVCR90(d).DLL,可先设置“Use of MFC”为“Use MFC in a Static Library”,然后编译,不用理会编译警告,然后再改回“Use Standard Windows Libraries”,再编译,就不依赖于MSVCR90.DLL了。
查看VC++工程,发现其原因是编译选项RuntimeLibrary默认是3(MFC 动态),经过改动后就变为1,所以该问题实际上是VC++界面上的选型和实际默认值不一样,以上的第2步不需要多次编译应该也行,只需要先改为“Use MFC in a Static Library”,点“应用”,然后马上改为“Use Standard Windows Libraries”,这样就把默认值改为显式指定了。
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""$(IntDir)""
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;_USRDLL"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3" ---> 1
UsePrecompiledHeader="2"
WarningLevel="4"
DebugInformationFormat="4"
/>
第2步的方法其实是绕开VC++2008的一个BUG,原文地址在 http://gccfeli.cn/2010/03/vs2008-msvcr90-dll-dependency-resolve.html
相关文章推荐
- VC2008 ATL控件 去掉运行库依赖(转载)
- VC2008 ATL控件 去掉运行库依赖
- VC2008 ATL控件 去掉运行库依赖
- ATL编写的带窗口的控件,无论VC6(ATL3.0) VC7.1(ATL7.0) 在Windows 7 或 Server 2008 下,WinForm调用时发生的问题
- 我写的一个Qt 显示二维码( QR Code)的控件(可以去掉对 libpthread 的依赖,而且编译出的库文件可以在 vc2010 的release 模式下使用)
- vc 2005 2008 2010 安装ie8后不能添加控件变量解决方法
- 在VC中调用WORD(显示,修改,存盘,运行宏)之二去掉word的常用,格式工具栏
- VC2008 Windows Media Player控件的使用技巧(三)
- 【转】VS2005编译VC++非托管代码(无需依赖.Net Framework即可运行)
- 如何在VC6或者VC7下用 ATL做一个OpenGL的(COM)控件?
- vc2008中mfc菜单、控件等汉字显示为问号或乱码的解决方法---难者不会,会者不难!
- winserver2008,运行可执行文件,提示 激活上下文生成失败。 找不到从属程序集 Microsoft.VC90.DebugCRT,processorArchitecture="x86"
- 使用VC2008创建基于ATL的ActiveX控件,不自动调用OnCreate函数
- VC2008 Windows Media Player控件的使用技巧
- 用VS编译出不依赖VC运行库的可独立运行的程序
- vc2008编译的程序在其他电脑上无法运行的解决方案
- 部署VC2008应用程序时不能运行解决办法
- 在VC中调用WORD(显示,修改,存盘,运行宏)之二去掉word的常用,格式工具栏
- 如何用vc(atl)编写安全的控件
- VC2008程序在别人电脑上运行