com dll的DllGetClassObject函数如何导出啊?

hh_xj 2010-12-31 05:22:15
我在学COM, 写了一个DLL COM组件示例,
注册用DllRegsiterServer(),注册成功的。
在测试组件时,在函数CoGetClassObject中,发生了一个错误 。
调试时,根据返回值找到的提示是: 0x800401f9 DLL 中出错

我怀疑是我的组件的 DllGetClassObject 函数 没有被调用,把断点设在这个函数中,没有抓到。
这是我关于这个函数的声明,

HRESULT __stdcall DllGetClassObject(const CLSID &clsid, const IID &iid, void **ppv)


问题是:这显然不是一个dllexport函数,可能com库函数查找它出错了。当我加上dllexport属性后,
__declspec(dllexport) HRESULT __stdcall DllGetClassObject(const CLSID &clsid, const IID &iid, void **ppv)


编译时,提示重定义,与系统的冲突:
STDAPI  DllGetClassObject(__in REFCLSID rclsid, __in REFIID riid, LPVOID FAR* ppv);




有谁知道,问题原因是这个吗?我应该怎么做,
...全文
274 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hh_xj 2011-01-04
  • 打赏
  • 举报
回复
我不懂mfc和atl
hh_xj 2011-01-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 michael_g 的回复:]
你创建一个win32 的空项目,在把你的代码移植过去。你创建应用时可能选的mfc 或atl。
[/Quote]
我搞定了,用.def文件的方法把符号导出就可以了
Michael_g 2011-01-04
  • 打赏
  • 举报
回复
你创建一个win32 的空项目,在把你的代码移植过去。你创建应用时可能选的mfc 或atl。
hh_xj 2010-12-31
  • 打赏
  • 举报
回复
我自己写的,简单的理解下com的原理
Michael_g 2010-12-31
  • 打赏
  • 举报
回复
你用的是什么框架?MFC ?ATL ? 还是用Win32 自已实现的所有接口?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧