VB.

步骤:

1.创建类库;类库的创建必须分为接口和实现类;给外面提供的是COM接口;

创建了接口和类之后还要创建“Guid”,这个在“工具-》创建GUID”创建。[Guid("A1DEEF6C-A752-4498-9AA9-7ABFA2C9B8C2")]

2.在“项目属性-》生成”勾选“为COM Interop注册”;在“项目属性-》应用程序-》程序集信息”中设置“使程序集COM可见”;

经过上面两步就生成了COM方式的DLL,会生成两个文件,一个是DLL文件,一个是tlb文件,VC要用的正是这个tlb文件。

例:

<ComClass(GetCbwApp.ClassId, GetCbwApp.InterfaceId, GetCbwApp.EventsId)> _
Public Class GetCbwApp
#Region "COM GUID"
' 这些 GUID 提供此类的 COM 标识
' 及其 COM 接口。若更改它们,则现有的
' 客户端将不再能访问此类。
Public Const ClassId As String = "a7e68ccf-873b-4295-ae73-d599a840876c"
Public Const InterfaceId As String = "e9058762-5a15-43ae-ac4a-a2683a8fbc40"
Public Const EventsId As String = "439d4951-b443-4eaf-aa44-50fb41937b1a"
#End Region
Public Sub Login()
MsgBox ("1")
End Sub
End Class

VC这边的调用方式有两种,一种是用命名空间的方式,一种是不用命名空间的方式。

不用命名空间的方式:

#import "xxx.tlb" no_namespace named_guids

int main(int argc, char* argv[])
{
CoInitialize(NULL); IUserPtr pICalc(CLSID_User);//接口名+Ptr; CLSID+实现类的名称
pICalc->Login();//直接调用接口函数
CoUninitialize();
}

用命名空间的方式:

#import "xxx.tlb"

using namespace ClassLibrary1;

HRESULT hresult;
CLSID clsid;
/* ARGSUSED */
void ufusr(char *param, int *retcod, int param_len)
{
CoInitialize(NULL); //initialize COM library
//hresult=CLSIDFromProgID(OLESTR("bcsUGIntegration.CbwApp"), &clsid); //retrieve CLSID of component
ClassLibrary1::_GetCbwAppPtr pUser = NULL;
hresult=pUser.CreateInstance(__uuidof(ClassLibrary1::GetCbwApp));
if(FAILED(hresult))
{
return;
}
else
{
pUser->Login();
}
}

最新文章

  1. 使用apache ftpserver搭建ftp服务器
  2. js框架设计1.2对象扩展笔记
  3. auto_ptr源码剖析
  4. node,不懂不懂
  5. UVa 105 - The Skyline Problem(利用判断,在于想法)
  6. Balance
  7. iOS - OC NSEnumerator 迭代器
  8. Linux 目录操作和4中文件拷贝效率测试
  9. 使用本地光盘安装Microsoft .NET Framework 3.5 for Win8/WinServer2012
  10. 疯狂java讲义笔记 2.3.7
  11. Ubuntu环境下NFS服务器搭建
  12. New Year Transportation(水)
  13. redhat6.3 64位更新源(使用网易源)全过程记录
  14. hadoop搭建杂记:Linux下虚拟机集群网络搭建
  15. 枚举算法总结 coming~^.*
  16. 浅谈JAVA ThreadPoolExecutor(转)
  17. Go并发编程实践
  18. 清理win10过期补丁的命令
  19. MSP430F149串口收发程序的学习(一)
  20. 斯坦福大学公开课机器学习: machine learning system design | error analysis(误差分析:检验算法是否有高偏差和高方差)

热门文章

  1. ajax异步请求数据
  2. tensorflow学习笔记--dataset使用,创建自己的数据集
  3. pyinstaller打包PySide2写的GUI程序,调用ffmpeg隐藏CMD控制台解决方案
  4. 六十八、SAP中内表插入的三种方法之二,COLLECT的使用,用于计算数字字段之和
  5. 133-PHP子类无法重写父类private同名函数
  6. 调试ASP.NET程序
  7. 【iOS】Swift4.0 GCD的使用笔记
  8. spark-submit脚本分析
  9. vue的computed和method的区别
  10. Caffe Install by Cmake in Ubuntu 18.04