新建项目 -- 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
至此即可