要做一個軟體的二次開發,廠家提供了一個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
uj5u.com熱心網友回復:
呼叫函式傳引數的時候出錯嗎?uj5u.com熱心網友回復:
檢查下變數型別是否一致uj5u.com熱心網友回復:
最近搞OPC,也為COM頭疼。遇到個類似的問題,我把人家vs生成的dll拿來BCB中用,能呼叫就是運行中不正常uj5u.com熱心網友回復:
BSTR bstrSerNum=0;都沒分配空間轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/47630.html
