【转】VC调用C#写的DLL

VC中调用C#写的DLL时,对C#这边的DLL有要求,即要在.NET这边以COM方式生成DLL;

步骤:

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

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

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

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

 

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

不用命名空间的方式:

#import "xxx.tlb" no_namespace named_guids

int main(int argc, char* argv[])

{

  CoInitialize(NULL);

  IUserPtr pICalc(CLSID_User);//接口名+Ptr; CLSID+实现类的名称
  int ret = pICalc->Add(4, 6);//直接调用接口函数

  CoUninitialize();

}

用命名空间的方式:

#import "xxx.tlb"

using namespace xxx;

int main(int argc, char* argv[])

{

 CoInitialize(NULL);

 xxx::IUserPtr pUsr=NULL;//声明接口
 HRESULT hr=pUsr.CreateInstance(__uuidof(xxx::User));//创建实现类的实例
 int i = pUsr->Add(3, 4);//调用接口函数

CoUninitialize();

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值