netcore调用c++的dll的两种方法

 

目录

1、托管库和非托管库介绍

2、非托管库

3、托管库


1、托管库和非托管库介绍

托管型代码的对象在托管堆上分配内存,创建的对象由虚拟机托管。(C# )
非托管型代码对象有实际的内存地址,创建的对象必须自己来管理和释放。(C++)

2、非托管库

C++创建的非托管dll库,需要用静态方法调用;

非托管模式从功能上来说,只支持函数调用,直接调用C++类库中的公共方法,在被导出的函数前面一定要添加额extern “C来指明导出函数的时候使用C语言方式编译和链接的,这样保证函数定义的名字相同,否则如果默认按C++方式导出,那个函数名字就会变得乱七八糟,我们的程序就无法找到入口点了。"__declspec(dllexport)“意思是将后面修饰的内容定义为DLL中要导出的内容。

C++中定义如下:

extern "C"

{

extern __declspec(dllexport) void   mbm_test();

}
或者直接定义:extern "C" __declspec(dllexport) void mbm_test(){}


在C#中,调用如下:

[DllImport("mbmasterd.dll", EntryPoint = "mbm_test")]
static extern void mbm_test();
 

3、托管库

使用CLR生成的托管C++dll库

需要在C++项目里面设置,让动态库受到公共语言运行时的支持,然后c#工程添加dll的引用即可调用了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值