VB创建ActiveX dll 的COM服务器,VC调用VB COM方法

本文介绍如何使用Visual Basic创建一个ActiveX组件,并通过Visual C++进行调用的过程。具体步骤包括创建ActiveX工程、实现接口方法、生成DLL文件及在VC项目中导入并调用这些方法。

1.用VB创建ActiveX类型的工程,重命名工程 和 模块名为 VBPrj、MATH

MATH.cls代码

Public Sub SayHello()
    MsgBox "Hello", vbOKOnly, "VB ActiveX"
End Sub

Public Function Info() As String
    Info = "info from VB COM"
End Function

2.生成VBPrj.dll

3.用VC创建一个Win32 Console的空项目,添加VCcall.cpp文件,代码如下:

//VCcaller.cpp 
#include <stdio.h>
#import "../VBPrj.dll" //import dll
#include <atlbase.h> 
#include   <comutil.h> 
#pragma   comment(lib, "comsupp.lib ") 
void test()
{
	::CoInitialize(0);
	VBPrj::_MATHPtr ptr("VBPrj.MATH");
	ptr->SayHello();

	_bstr_t ret=ptr->Info();
	printf("%s\n",(char*)ret);

	ptr=NULL;
	::CoUninitialize();
}
int main()
{
	test();
	return 0;
}
连接COM的另一种方式:
void test()
{
	::CoInitialize(0);
	//VBPrj::_MATHPtr ptr("VBPrj.MATH"); //Prog 方式
	VBPrj::_MATHPtr ptr;
	ptr.CreateInstance(__uuidof(VBPrj::MATH));//guid方式
	ptr->SayHello();

	_bstr_t ret=ptr->Info();
	printf("%s\n",(char*)ret);

	ptr=NULL;
	::CoUninitialize();
}

小技巧:

在#import "../VBPrj.dll" //import dll后,写其他调用代码前,先编译一次工程,使得dubug目录下生成VBPrj.tlh、VBPrj.tli文件,这样IDE输入就能智能联想,减少错误。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值