VB.

步骤:

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

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

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

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

例:

_

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();

}

}

Copyright © 2088 波隆网游活动中心 - 热门游戏限时福利聚合站 All Rights Reserved.
友情链接