我写了一个服务,启动服务,然后再同一台机器上运行客户端程序,但是在CoCreateInstance失败了,请问这是为什么?是注册的问题?
还有一个问题,如何生成一个代理dll?代理dll是必需的吗?
希望大虾能解答,分不够再补。
::CoInitialize(NULL); 
// Check the return value, hr... HRESULT hr=S_OK;
INNMServer* pNNMSvr=NULL;
hr=::CoCreateInstance(CLSID_CoNNMServer,NULL,CLSCTX_ALL,
IID_INNMServer,(void**)pNNMSvr);
BSTR topo;
if (SUCCEEDED(hr))
{
              MessageBox("call ok");
    pNNMSvr->Release();
}
::CoUninitialize();

解决方案 »

  1.   

    hr返回的值是多少?
    通过返回值你可以得到稍微详细点的说明
    代理dll是用来在其他计算机不直接注册组件而使用组件接口的
    用nmake YourCOMps.mk编译
    得到的dll在其他计算机上注册
      

  2.   

    0x80070057,我对com编程不多,不知道怎么查这个返回值的说明,
    老兄能不能告诉我。
    另外,代理dll的makefile是要自己写的,就像com技术内幕介绍的一样,需要自己导出各个接口,atl/vc有相关的工具吗/?
    谢谢
      

  3.   

    (void**)pNNMSvr
    ->
    (void**)(&pNNMSvr)
      

  4.   

    用atl工程,将自动生成代理的makefile文件。你自己就能在工程目录中找到