老问题,新帖子:----ATL不能调用基于MFC的dll函数,CoCreateInstance Failed

tccqs 2008-05-05 12:51:58
在win32 控制台都能直接调用的
基于MFC的dll的函数,,在ATL编译虽然可以
通过,,但在调用本ATL的应用程序里总是
弹出"CoCreateInstance Failed"

说明:在应用程序ATL的初始主要代码如下:
. . .
hr = CoInitialize(0);
. . .
// 使用SUCCEEDED 宏并检查我们是否能得到一个接口指针
if(SUCCEEDED(hr))
{
. . .
}
else
{
AfxMessageBox("CoCreateInstance Failed.");
}
. . .
...全文
66 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2008-05-06
  • 打赏
  • 举报
回复
Up
scq2099yt 2008-05-05
  • 打赏
  • 举报
回复
up
tccqs 2008-05-05
  • 打赏
  • 举报
回复
问最后一个问题...就结帖了:
一开始用如下方法输出内容到文件:
char * str
fprinft(fp1,str);
不能输出,再用如下方法,,还是不行

BSTR pp=L"宁波";
_bstr_t str1 = pp;
fprintf(fp1,(TCHAR*)str1);
怎样才可以将BSTR输到文件
eirssy 2008-05-05
  • 打赏
  • 举报
回复
COM中要求使用UNICODE编码
你的是ANSI
eirssy 2008-05-05
  • 打赏
  • 举报
回复
没错,在控制台中调用是不会出错(如果不出意外)。

在ATL中调用基本都是非法的。
说明几点:
1、CoInitialize()不是MFC函数,它属于SDK中API。
2、CoInitialize()在同一线程不应该重复调用。所以可能是你在Client中已经调用了CoInitialize()或者其他类似的函数。
请验证hr (hr == S_FALSE || hr == RPC_E_CHANGED_MODE)
tccqs 2008-05-05
  • 打赏
  • 举报
回复
为什么在ATL弹出的菜单
MessageBox(NULL,"内容","数据",MB_OK);
它的"内容"会显示成了"?",,
而同样在Win32 控制台应用程序里又是正常的..
真是郁闷到极点了..

3,245

社区成员

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

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