非MFC工程,采用静态链接MFc时,出现无法解析的外部符号CoInitialize

在非MFC工程中使用静态链接MFC时,遇到无法解析的外部符号`CoInitialize`错误。通过两种方法解决此问题:1. 修改项目属性,静态链接MFC库;2. 拷贝必要的manifest文件到应用程序目录。对于非MFC工程,需要包含`afxwin.h`以解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在vs2005下开发出一个从wav到wma转换的demo(不是mfc程序)。这个demo中使用windows media format sdk 9.0进行从wav到wma 的转换。在我的开发环境中使用的很好,只是一移动到没有vs2005开发环境的平台上(windows xp),就出现提示“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。”

        从网上找了资料

 

 

在项目属性-〉配置属性-〉c/c++ -〉代码生成里,有一个运行时库,
.net 05 的默认选项是 多线程DLL,把他改成多线程即可。

后来我花了一些时间测试,发现也可以不用修改编译选项,只要将Program Files/Microsoft Visual Studio 8/VC/redist下相应平台的Microsoft.VC80.MFC.manifest和Microsoft.VC80.CRT.manifest 拷贝到应用程序目录即可。如果你还用到了atl库,则还要Microsoft.VC80.ATL.manifest。

总结:解决这个问题目前我所知道的有两种方法,

1,修改项目属性,静态链接mfc库(静态链接时,会自动修改上面提到的多线程DLL为多线程)。

2,带上Microsoft.VC80.MFC.manifest和Microsoft.VC80.CRT.manifest。

 

 

使用上面的方法1也就是静态链接mfc库,会出现编译错误:

       error LNK2019: 无法解析的外部符号 __imp__CoInitialize@4,该符号在函数 _main 中被引用

 

因为不是MFC的工程,所以需要

include <afxwin.h>         // MFC core and standard components

 

包含了afxwin.h文件后,世界终于安静了。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值