CoInitialize(NULL); //mcp interface
IMCPPublishImpl * pMcpPublish=NULL;
//create mcp object
HRESULT hr=CoCreateInstance(CLSID_Publish, NULL, CLSCTX_INPROC_SERVER,
IID_IPublish, (void **)&pMcpPublish); if(FAILED(hr))
{
return hr;
} pMcpPublish->put_MaxBitrate(3750000);
pMcpPublish->put_VideoHSize(0);
pMcpPublish->put_VideoVSize(0);
pMcpPublish->put_VideoBitRate(0); pMcpPublish->put_PublishFilename(L"c:\\ftphome\\000003e8"); pMcpPublish->put_SubscribeFilename(L"00080310");
pMcpPublish->put_PublisherIP(L"192.168.80.131"); if(FAILED(pMcpPublish->AddSubscriber(L"192.168.80.131",L"")))
{
return 0;
}// pMcpPublish->SetEventCallback((CALLBACK), this) long nRet;
pMcpPublish->Start(&nRet);
if(FAILED(pMcpPublish->WaitForFinish(1000)))
return 0;
pMcpPublish->Release();
CoUninitialize();
return 0;不知道这段代码哪里有问题,调用com以前都这样的,释放也是这样都非常好,为什么这次不行,每次运行到 CoUninitialize();就出错,各位高手有碰到类似的问题吗?快来帮我啊。说明:
这段代码是房子一个线程中单独执行的
IMCPPublishImpl * pMcpPublish=NULL;
//create mcp object
HRESULT hr=CoCreateInstance(CLSID_Publish, NULL, CLSCTX_INPROC_SERVER,
IID_IPublish, (void **)&pMcpPublish); if(FAILED(hr))
{
return hr;
} pMcpPublish->put_MaxBitrate(3750000);
pMcpPublish->put_VideoHSize(0);
pMcpPublish->put_VideoVSize(0);
pMcpPublish->put_VideoBitRate(0); pMcpPublish->put_PublishFilename(L"c:\\ftphome\\000003e8"); pMcpPublish->put_SubscribeFilename(L"00080310");
pMcpPublish->put_PublisherIP(L"192.168.80.131"); if(FAILED(pMcpPublish->AddSubscriber(L"192.168.80.131",L"")))
{
return 0;
}// pMcpPublish->SetEventCallback((CALLBACK), this) long nRet;
pMcpPublish->Start(&nRet);
if(FAILED(pMcpPublish->WaitForFinish(1000)))
return 0;
pMcpPublish->Release();
CoUninitialize();
return 0;不知道这段代码哪里有问题,调用com以前都这样的,释放也是这样都非常好,为什么这次不行,每次运行到 CoUninitialize();就出错,各位高手有碰到类似的问题吗?快来帮我啊。说明:
这段代码是房子一个线程中单独执行的
解决方案 »
- 用VS2005编写的C++程序在移植到另一台机器上时经常会遇到下面的错误?????
- 自定义的ListCtrl类初始化遇到的奇怪问题
- 哪位大侠知道修改(替换,移动)别人程序中图片的方法!!
- 关于MainFrame指针传递的问题。高分求教!
- ~{Gk=LWvR;8v@`KFSZ4r?*~}"~{NR5D5gDT~}"~{V.:sOTJ>5D=gCf~}?
- 对话框怎么捕获键盘消息???
- 高手请帮忙:看看错在哪里!
- MFC关于工具栏与菜单
- 谁可以告诉我怎么调用已有的EXE文件。
- 谁知道用adodc控件时,如何取得某一个列的值。
- 关于CMainFrame::PreCreateWindow,我在该函数中设置断点,可是执行的时候,该断点总是被执行两次,为什么啊?
- 请教创建8位BMP图
try
{
//
}
catch(_com_error &e)
{
MessageBox(e.xx());
}
看看
2GetLastError()看看能不能得到有用的信息
-------------------
你是和我说话吗?如果是的话,你这个要加到调用此函数的函数中,如
try
{
yourfun();
}
catch(_com_error &e)
{
MessageBox(e.xx());
}
===============
提示什么错误信息?其他的调用都正常吗?
之后,
也许都执行正确了,最后返回0啊
你检查一下CoInitialize是否成功?
另外如果是线程中这么做可能需要对线程做一些操作。
你看看MSDN这一段:
CoUninitialize should be called on application shutdown, as the last call made to the COM library after the application hides its main windows and falls through its main message loop. If there are open conversations remaining, CoUninitialize starts a modal message loop and dispatches any pending messages from the containers or server for this COM application. By dispatching the messages, CoUninitialize ensures that the application does not quit before receiving all of its pending messages. Non-COM messages are discarded.
那个函数我用GetLastError看是成功的,另外你说的那段英文代码我可能不能够很到位的理解。我现在做个实验