在win32 控制台都能直接调用的
基于MFC的dll的函数,,在ATL编译虽然可以
通过,,但在调用本ATL的应用程序里总是
弹出"CoCreateInstance Failed"说明:在应用程序ATL的初始主要代码如下:
. . .
hr = CoInitialize(0);
. . .
// 使用SUCCEEDED 宏并检查我们是否能得到一个接口指针 
if(SUCCEEDED(hr))
{
  . . .
}
else
{
   AfxMessageBox("CoCreateInstance Failed.");
}
. . .

解决方案 »

  1.   

    为什么在ATL弹出的菜单
    MessageBox(NULL,"内容","数据",MB_OK);
    它的"内容"会显示成了"?",,
    而同样在Win32 控制台应用程序里又是正常的..
    真是郁闷到极点了..
      

  2.   

    没错,在控制台中调用是不会出错(如果不出意外)。在ATL中调用基本都是非法的。 
    说明几点:
    1、CoInitialize()不是MFC函数,它属于SDK中API。
    2、CoInitialize()在同一线程不应该重复调用。所以可能是你在Client中已经调用了CoInitialize()或者其他类似的函数。
       请验证hr (hr == S_FALSE || hr == RPC_E_CHANGED_MODE) 
      

  3.   

    COM中要求使用UNICODE编码
    你的是ANSI
      

  4.   

    问最后一个问题...就结帖了:
    一开始用如下方法输出内容到文件:
    char * str
    fprinft(fp1,str);
    不能输出,再用如下方法,,还是不行 BSTR pp=L"宁波";
    _bstr_t   str1   =   pp; 
    fprintf(fp1,(TCHAR*)str1);
    怎样才可以将BSTR输到文件