• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c++导出dll给c#调用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在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.csdn.net/fuck487/article/details/53036086

https://blog.csdn.net/big_bit/article/details/51595714

https://blog.csdn.net/ooyyee11/article/details/6894436

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#将XML转为PDF发布时间:2022-07-18
下一篇:
C#中继承和多态发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap