关于纯C++编写的com组件在vb.net等其他语言引用出错问题

本文介绍了纯C++编写的COM组件在注册成功并能被VC调用后,如何解决在vb.net中引用时出现错误的问题。关键在于COM组件的TypeLib未正确写入注册表。通过添加特定的注册表代码,并使用HelperWriteKey函数写入clsid(需传入lib的clsid而非对象类的),可以解决此问题。在反注册时,别忘了删除相应的注册表项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

纯C++编写com组件网上的例子蛮多大家可以自选搜索,

写出来的com可以注册成功VC调用也没问题,但是用vb.net去调用时引用却不行会有以下错误


这是因为没有把TypeLib写入注册表,添加以下写注册表代码就可以了

HRESULT RegisterTypeLibServer(const CLSID& clsid, const TCHAR *szVersion, const TCHAR *szLibraryName, const TCHAR *szTlbPath)
{
	TCHAR szCLSID[MAX_PATH];
	WCHAR *lpwszClsid;
	StringFromCLSID(clsid, &lpwszClsid);
	wsprintf(szCLSID, "%S", lpwszClsid);

	TCHAR szKey[MAX_PATH];
	wsprintf(szKey, "TypeLib\\%s", szCLSID);
	HelperWriteKey(HKEY_CLASSES_ROOT, szKey,
		NULL, REG_SZ, (void*)NULL, 0);

	//1.0
	wsprintf(szKey, "TypeLib\\%s\\%s", szCLSID, szVersion);
	HelperWriteKey(HKEY_CLASSES_ROOT, szKey,
		NULL, REG_SZ, (void*)szLibraryName, lstrlen(szLibraryName));

	TCHAR szSubKey[MAX_PATH];
	memset(szSubKey, 0, MAX_PATH);
	lstrcpy(szSubKey, szKey);
	lstrcat(szSu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值