vs2017生成COM元件,VB呼叫
阿新 • • 發佈:2018-12-15
新建專案 -- 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
至此即可