使用C++/CLI调用C#封装类库

小序:

用C#开发的库,供C#开发人员调用,一切正常。客户:你们的API得支持C++。对于C++小白的我来说,只能含泪恶补C++知识,并且准备使用C++来封装接口的时候突然发现,C#端封装的接口里面使用了第三方的库,C++里面没用对应的库,欲哭无泪的我正准备放弃的时候,山穷水复疑无路,柳暗花明又一村,偶然发现的 C++/CLI完美解决了我的问题。

正文:

这里不准备做C++/CLI的介绍,只是将使用过程中踩过的坑做记录。

使用C++/CLI可以在C++中调用C#封装的dll,在实际使用中,由于数据接口还是C#类型,需要做相应的转换供C++人员使用。这里推荐一款神器:C# to C++ Converter

地址: https://www.tangiblesoftwaresolutions.com/product_details/csharp_to_cplusplus_converter_details.ht

将c#对象转换为c++对象,对于c++小白的我来说无外乎为天降猛男。

使用C++/CLI中遇到的最大的问题莫过于处理System.Object类型的数据,通过C# to C++ Converter 转换为c++代码对应的类型为

void*,查阅资料如何实现void*指针与托管对象System.Object相互转换,发现这条路走不通后。只好采取另外的方法,在c++中使用

byte数组来替代void*,byte数组很容易转托管类型数组array<byte>,通过Mashal::Copy方法即可实现转换。剩下的问题为如何将

c++各种类型的数据转换成byte数组,经过一番摸索,发现借助BitConverter可以很方便完成这一工作,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值