1. 程式人生 > >vs2017生成COM元件,VB呼叫

vs2017生成COM元件,VB呼叫

新建專案 -- ATL專案  (專案屬性--連結器--常規--逐使用者重定向 --選為是)

 確定,跳出ATL選項,直接再點確定

addcom專案新增專案

新增類test(atl簡單物件)

此時test.h中的標頭檔案addcom_i.h尚未生成,只是一個空檔案,會提示未定義識別符號,不用管

在idl檔案中新增介面方法(重要  -- vs2017以前可通過類檢視中移到專案上展示xx而非__interface xx的那個專案右鍵新增方法),這裡只能手動新增,新增在新增介面中

interface Itest : IDispatch {

	[id(1)] HRESULT ggr([in]LONG n, [out]LONG* sum);
	[id(2)] HRESULT add([in]LONG a, [in]LONG b, [out]LONG* sum);

}

然後在test介面的類的.h檔案和.cpp檔案補充好

test.h

	STDMETHODIMP ggr(LONG n,LONG* sum);
	STDMETHODIMP add(LONG a, LONG b, LONG* sum);

test.cpp

STDMETHODIMP_(HRESULT __stdcall) Ctest::ggr(LONG n, LONG * sum)
{
	*sum = 124 + n;
	return S_OK;
}

STDMETHODIMP_(HRESULT __stdcall) Ctest::add(LONG a, LONG b, LONG * sum)
{
	*sum = a + b;
	return S_OK;
}

生成即可

VB中新建專案,在隨便某個按鈕實現中新增以下程式碼

ps:project--reference--找到目標dll新增(需要把目標dll加入到WOW64中並註冊方可   32位對應sys32)

--否則提示 ActiveX component can't create object

Dim a As addcomLib.test
Set a = New test
Dim b As Long
a.Add 5, 7, b
 Print b
a.ggr 1, b
Print b

至此即可