描述:
我用vc++为.NET写了一个在.NET中调用的COM组件。怎么调试这个C++ COM组件呢?
解决方案1:
jjj
解决方案2: 请试试我的方法:用.NET创建一个基于对话框的项目->在对话框上添加一个按钮->点击按钮.
1.在对话框源文件声明:
#import "....\\Debug\\AptUpdataFile.dll" no_namespace//组件本地磁盘路径
const IID IID_IUpdateFile = {0x66FC7499,0x5FE7,0x40CF,{0xA5,0x2E,0x4E,0x2C,0x6C,0x10,0x9C,0x1B}};
const CLSID CLSID_UpdateFile = {0x41FF0FBA,0x90A8,0x4DC2,{0xA3,0x85,0xAD,0xFB,0x7C,0x7B,0x3D,0xB8}};//组件接口ID,在组件中找
#include <atlbase.h>
2.在事件函数OnClike..下书写:
::CoInitialize(NULL);
IUpdateFile* p;//组件接口
::CoCreateInstance(CLSID_UpdateFile,NULL,CLSCTX_INPROC_SERVER,\
IID_IUpdateFile,reinterpret_cast<void**>(&p));
try
{
BSTR dd1,dd2;
dd1=L"update.xml";
dd2=L"E:\vc\AptUpdataFile\AptUpdataFile\Debug";
p->UpdateFile(dd1,dd2);//通过接口调用组件函数,从而调试组件
}
catch(_com_error e)
{
MessageBox(NULL,e.Description(),NULL,0);
}
p->Release();
::CoUninitialize();
确信COM dll和.NET exe工程在相同的solution中,
然后, 试下在.NET工程中,设置COM dll工程的调试目标是当前的.NET exe,如果还不行,
试下找下'debugging unmanaged code' 选项...
if it still doesn't work, i have no idea , sorry :) 解决方案4:
或者,添加你的COM工程进入.NET solution,然后,调试... 解决方案5:
应该和其他VC++的调试方法一样吧,
在VC++ COM工程里注册你编译出来的COM组件,然后指定调试程序为你的.NET应用程序,这样应该就可以调了.