c++导出dll给c#调用

本文介绍如何在C++中创建DLL并导出函数供C#调用,涉及DLL项目创建、方法修饰、参数传递等内容,并给出具体实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在C++端包括创建dll项目、源文件下添加类、头文件对方法添加修饰符及在源文件实现头文件方法;在C#端(非CLR)包括将dll拷贝到运行目录及DllImport定义调用的方法。

1、 创建dll项目

 

 

2、  源文件下添加类

 

 

3、  头文件对方法添加修饰符

extern "C" _declspec(dllexport) double __stdcall TestFuzzy(char * localPath,int cols,int lowThreshold,int heightThreshold);

“extern "C" _declspec(dllexport)”是必备的不然无法导出此方法,“__stdcall”代表参数的顺序

4、  在源文件实现头文件方法

double _stdcall TestFuzzy(char * localPath,int cols,int lowThreshold,int heightThreshold)

{

}

5、  将dll拷贝到运行目录

对C++项目中引用的第三方的库需要一起拷贝过来,如下图引用了OpenCV的库。

 

 

6、  DllImport定义调用的方法

[DllImport("ThirdDll.dll", EntryPoint = "TestFuzzy")]

        public static extern double TestFuzzy(string localPath, int cols, int lowThreshold, int heightThreshold);

7、 对于第三方库的添加

通过NuGet添加或按照手工步骤添加(包括:“工程---属性---配置属性---c/c++---常规---附加包含目录”、“工程---属性---配置属性---链接器---常规---附加库目录”及“工程---属性---配置属性---链接器---输入---附加依赖项”)

8、 注意事项

不能跨DLL传递std::string用char *替代。c#调用c++的类型对照参考

“https://www.cnblogs.com/profession/p/4935100.html”

 

参考:

https://www.cnblogs.com/lgyup/p/7116162.html

https://blog.youkuaiyun.com/fuck487/article/details/53036086

https://blog.youkuaiyun.com/big_bit/article/details/51595714

https://blog.youkuaiyun.com/ooyyee11/article/details/6894436

 

转载于:https://www.cnblogs.com/hepc/p/9297464.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值