C++ 调用C#工程的 dll , 互相调用方法

很多时候在项目中需要通过C++调用C#的dll,或者反过来条用。

首先明白一个前提:C#是托管型代码。C++是非托管型代码。

托管型代码的对象在托管堆上分配内存创建的对象由虚拟机托管。(C# )

       非托管型代码对象有实际的内存地址,创建的对象必须自己来管理和释放。(C++)

两者详细区别阅读我的另一篇:托管代码和非托管代码的介绍,以及在这区别下的混合调试方法

1、C#调用C++的dll.

在C#工程中的引用项中直接将要使用的C++dll引用进来即可。 然后创建对象或者调用接口。


2、C++调用C#的dll.

C++调用C#dll,目前我知道的有两种方式

(1)com方式调用。

这种调用方式就是将dll转换成类com组件的方式调用。

直接看方法:C++ 调用C#dll不是直接调用dll, 而是调用一个转变后的文件:.tlb文件的支持

tlb文件:com类型库文件,它包含接口相关信息。在需要使用对应com类的模块里,通过"#import xxx.tlb"来调用。

eg: 在C++代码中使用: #import "../../out/debug/TGPDFSignLib.tlb"

这个.tlb文件会对应的生成tgpdfsignlib.tli 和 tgpdfsignlib.tlh两个文件。 

在VC下#import "

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值