博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

好好学习

  bilbo.cublog.cn

关于作者
姓名:你知道
职业:IT
年龄:每年大一岁
位置:地球
个性介绍:挺笨
Email: bilbo0214@163.com
|| << >> ||
我的分类


Dev-C++下编译COM程序出错的原因及解决
在CodeProject上看到一篇关于使用C写COM程序的文章http://www.codeproject.com/com/com_in_c1.asp,把代码下载下来后进行测试。
 
因为都是Visual Stdio的project,使用Dev-C++的导入功能,把项目转换成Dev-C++项目,编译都没有错误,但运行测试程序总是提示CoGetClassObject()执行结果有错误。
 
hr = CoGetClassObject(&CLSID_IExample, CLSCTX_INPROC_SERVER, 0, &IID_IClassFactory, &classFactory)
执行完成后,hr的值是CO_E_ERRORINDLL,即0x8004_01f9。事实上,COM对象已经注册成功。
Microsoft网站上http://support.microsoft.com/kb/258942/zh-cn提供了解决方法,其实主要是在链接选项里面加入/DEF:<DEF文件名>
 
因为Dev-C++导入时不是自动加入这个选项,需要手动加入,如Dev-C++中的FAQ所述:

How can i provide a .def file for my DLL ?

Put in Project Options, Linker parameters : --def yourfile.def
 
这样重新编译后,就可以正常执行了。

发表于: 2007-11-29,修改于: 2008-05-20 21:21,已浏览744次,有评论0条 推荐 投诉


网友评论
 发表评论