您的位置:首页 > 其它

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

2009-03-28 16:29 609 查看
        在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文件后,世界终于安静了。

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐