首先,c++的类在c#中是不兼容的,因此,c#只能够使用c++的导出函数,不能使用导出类(非常执着的去搞也是可以的,只是得不偿失,很困难)

.

其次,为了防止c++的编译器对c++函数命名方式进行改变,导出函数要用 extern "C" 来修饰,这个当然是众所周知的了

.

然后,要把一个函数指明是导出函数,要用 _declspec(dllexport) 来修饰

.

因此,一个完整的c++导出函数应该是这样的:

extern "C" _declspec(dllexport)int MyPlus(int a,int b)
{return a+b;
}

  

在c#中,首先要引用命名空间 using System.Runtime.InteropServices;

.

然后使用 DllImport属性来声明一个外部函数,这个函数必须是静态的,因此,应该长成这个样子:

[DllImport("CPP.dll", EntryPoint = "MyPlus")]
public static extern int mp(int a,int b);

  

先指定动态链接库名字,EntryPoint是c++中的函数名,mp是你在c#使用的函数名.

.

至此,你就可以随心所欲的使用这个函数了,是不是很简单?

.

如果非常想使用c++中的类,那么只能模仿c++编译器的技术,手动实现所谓的this指针,这个无非是语法糖

把对象的指针强制转换成int类型返回给c#,然后把c++里类的函数包装成一个外部函数,把对象指针以int形式传入

C#中调用C++ 动态链接库 dll 的方法相关推荐

  1. Java通过JNI调用C++动态链接库dll,并打在jar包内 ——JNA-JNI(一)

    Java通过JNI调用C++动态链接库dll,并打在jar包内--JNA-JNI(一) 系列文章: Java通过JNI调用C++动态链接库dll,并打在jar包内 --JNA-JNI(一) Java使 ...

  2. Js文件中调用其它Js函数的方法(转)

    2019独角兽企业重金招聘Python工程师标准>>> Js文件中调用其它Js函数的方法 在项目开发过程中,也许你会遇这样的情况.在某一Js文件中需要完成某一功能,但这一功能的大部分 ...

  3. Js文件中调用其它Js函数的方法

    2019独角兽企业重金招聘Python工程师标准>>> Js文件中调用其它Js函数的方法 在项目开发过程中,也许你会遇这样的情况.在某一Js文件中需要完成某一功能,但这一功能的大部分 ...

  4. vue怎么调用子元素的方法_vue 父组件中调用子组件函数的方法

    vue 父组件中调用子组件函数的方法 在父组件中调用子组件的方法: 1.给子组件定义一个ref属性.eg:ref="childItem" 2.在子组件的methods中声明一个函数 ...

  5. php调用会员刷卡,dedecms模板中调用会员信息标签的方法

    dedecms模板中调用会员信息标签的方法 比如你想在DEDE首页或者内页里调用会员:用户名.昵称.性别.会员等级.注册邮箱.会员级别等信息.就需要我们本篇教程提供的调用标签了. 首先,我们打开文件 ...

  6. 织梦cms php中调用当前频道,DEDE织梦CMS模板在runphp=yes的标签中调用其他field值的方法...

    这篇文章主要为大家详细介绍了DEDE织梦CMS模板在runphp=yes的标签中调用其他field值的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. Ded ...

  7. C++ 调用lib 和 dll的 方法 及 动态库DLL与静态库lib的区别

    C++ 调用.lib的方法: 一: 隐式的加载时链接,有三种方法 1  LIB文件直接加入到工程文件列表中 在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add F ...

  8. 一种实现 Java调用C++的DLL的方法

    http://topic.csdn.net/t/20020917/14/1030420.html 感谢大家支持,这几天我在IBM中文及SUN官方网站中找了不少关于JNI的文章,受益非浅,希望     ...

  9. 非托管C++程序中调用C#的dll

    刚去的新公司分配了我一个项目需求,将PPT文件(包括*.ppt和*.pptx)转换成多张png图片.由于以前只有native C++的经验,在网上逛了多圈后,发现都是使用C#实现这个功能的,被这个需求 ...

最新文章

  1. 3 css 奖品出现弹出动画_【技术】nuxt中引入wow和animate.css 页面随滚动条出现动画...
  2. 做技术的,年龄大了你慌吗?
  3. python空字典对象相当于false吗_python怎么判断某一对象是否为字典
  4. 产业企业和投资机会研究(中小板、创业板) 碧水源(300070)创业板
  5. 测试博客园Markdown 表格
  6. 12月27日云栖精选夜读:实人认证 - 阿里云实人认证(公测)发布
  7. JS判断页面控件是否可用
  8. php代码实现对word文件的查找与替换,ThinkPHP5使用phpword实现文件模板字符替换
  9. java 类及对象的课后作业_JAVA类和对象课后作业
  10. content add tpl.php,phpcms后台批量上传添加图片文章方法详解(一)
  11. 天文学中常用的坐标系
  12. patran如何看屈曲因子_校准证书中的修正值、修正因子,你真的会用吗?
  13. TensorFlow 官方文档中文版发布啦(持续维护) 1
  14. centOS6.4部署svn
  15. Invisible Perturbations: Physical Adversarial Examples Exploiting the Rolling Shutter Effect 论文解读
  16. torch 深度学习(5)
  17. SDN免费快速获得积分和直接获取下载码的几个办法,亲测有效区
  18. c语言外部中断服务程序设计,手把手教你学单片机的C语言程序设计十二中断服务函数.pdf...
  19. Caused by: javax.security.auth.login.LoginException: unable to find LoginModule class: com.ibm.secur
  20. 流程驱动管理vs 数据驱动管理

热门文章

  1. 微信小程序 canvas 文字自动换行
  2. URL解析-URLComponents
  3. Asp.net 用户控件和自定义控件注册
  4. 练习 假设性思维 和Mapping from vision to reality
  5. 开发人员常用SVN命令
  6. jquery Selector 源码分析
  7. 鸿蒙系统支持最低处理器,这四款华为手机可升级到鸿蒙系统,老机型居多,最低只需千元!...
  8. DSP/BIOS中的数据类型
  9. 多采样率信号处理 ——信号的抽取与插值
  10. 难点电路详解之负反馈放大器电路(1)