c++builder COM类型库的调用出现内存错误

qiaopao9065 2017-05-23 10:03:04
要做一个软件的二次开发,厂家提供了一个COM类型的DLL库。
我的做法是:
1.c++builder 导入类型库的方式生成xx_LIB.cpp和xx_LIB.h。
2.把上面生成的文件添加到工程并#include xx_LIB.h
3.然后按照网上说的创建实例和调用函数,代码如下:
void __fastcall TForm1::Button1Click(TObject *Sender)   // 初始化COM并创建一个对象
{
HRESULT init;
HRESULT hr;

init=CoInitialize(NULL);//初始化 COM库
if(SUCCEEDED(init))
{
ShowMessage("初始化COM对象成功");
}

//-----------------------------------------------------------------
IRenishawDX10 *pDX10 =NULL; //创建一个对象
hr=CoCreateInstance(Dx10sdkadaptorlib_tlb::CLSID_DX10Adaptor,NULL,CLSCTX_INPROC_SERVER,Dx10sdkadaptorlib_tlb::IID_IRenishawDX10,(void**)&pDX10);
if(SUCCEEDED(hr))
{
BSTR bstrSerNum=0;
VARIANT_BOOL bOK;

pDX10->AddRef();
Edit1->Text="创建COM对象成功" ;
pDX10->Connect(&bstrSerNum,&bOK); //连接
pDX10->Release();
}
//-----------------------------------------------------------------

CoUninitialize(); //终止COM库

}


但是出现问题就是运行到调用函数即 pDX10->Connect(&bstrSerNum,&bOK); 这行时发生内存错误:

access violation at 0x7725fad5:write of address 0x00030e70
...全文
1391 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
BSTR bstrSerNum=0;都没分配空间
华山沦贱 2018-06-10
  • 打赏
  • 举报
回复
最近搞OPC,也为COM头疼。遇到个类似的问题,我把人家vs生成的dll拿来BCB中用,能调用就是运行中不正常
zhujinqiang 2017-05-25
  • 打赏
  • 举报
回复
检查下变量类型是否一致
zhujinqiang 2017-05-25
  • 打赏
  • 举报
回复
调用函数传参数的时候出错吗?

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧