【求解决】CLSIDFromProgID返回“无效的类字符串”,ProgID在注册表中有,为什么还返回无效的错误?
写了一个名为MyProject.dll的服务器COM组件,原先工程中REGISTRY中并没有向注册表写ProgID的信息,后来自己添上了,如下:
ProgID = s 'MyProject.MyCom';
查看注册表显示这个dll注册是成功的。
在客户端程序(基于对话框的MFC APP)中,stdafx.h中添加了如下两句:
#import "../bin/debug/MyProject.dll"
#import "../MyProject/Debug/MyProject.tlb"
(例程中只提示要添加第二句,我不甚明白,为了防止意外,也写了第一句,有谁能解释一下这个.tlb文件的作业?)
同时在ClientDlg.cpp文件中使用using namespace MyProjectLib;
我感觉多数工作都已经做完了,下面是我的代码部分,但是调用CLSIDFromProgID的返回值始终提示“无效的类字符串”,请教高人解决方法,谢谢啦!!!
HRESULT hr = CoInitialize(NULL);
CLSID clsid;
hr = CLSIDFromProgID(OLESTR("MyProject.MyCom"),&clsid);
if (FAILED(hr))
{
AfxMessageBox(L"COM Failed.");
return;
}
IMyCom *ptr = NULL;
hr = CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(IMyCom),(LPVOID*)&ptr);
ptr->MyF1();
ptr->Release();
CoUninitialize();