C#中调用C++ 动态链接库 dll 的方法
首先,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 的方法相关推荐
- Java通过JNI调用C++动态链接库dll,并打在jar包内 ——JNA-JNI(一)
Java通过JNI调用C++动态链接库dll,并打在jar包内--JNA-JNI(一) 系列文章: Java通过JNI调用C++动态链接库dll,并打在jar包内 --JNA-JNI(一) Java使 ...
- Js文件中调用其它Js函数的方法(转)
2019独角兽企业重金招聘Python工程师标准>>> Js文件中调用其它Js函数的方法 在项目开发过程中,也许你会遇这样的情况.在某一Js文件中需要完成某一功能,但这一功能的大部分 ...
- Js文件中调用其它Js函数的方法
2019独角兽企业重金招聘Python工程师标准>>> Js文件中调用其它Js函数的方法 在项目开发过程中,也许你会遇这样的情况.在某一Js文件中需要完成某一功能,但这一功能的大部分 ...
- vue怎么调用子元素的方法_vue 父组件中调用子组件函数的方法
vue 父组件中调用子组件函数的方法 在父组件中调用子组件的方法: 1.给子组件定义一个ref属性.eg:ref="childItem" 2.在子组件的methods中声明一个函数 ...
- php调用会员刷卡,dedecms模板中调用会员信息标签的方法
dedecms模板中调用会员信息标签的方法 比如你想在DEDE首页或者内页里调用会员:用户名.昵称.性别.会员等级.注册邮箱.会员级别等信息.就需要我们本篇教程提供的调用标签了. 首先,我们打开文件 ...
- 织梦cms php中调用当前频道,DEDE织梦CMS模板在runphp=yes的标签中调用其他field值的方法...
这篇文章主要为大家详细介绍了DEDE织梦CMS模板在runphp=yes的标签中调用其他field值的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. Ded ...
- C++ 调用lib 和 dll的 方法 及 动态库DLL与静态库lib的区别
C++ 调用.lib的方法: 一: 隐式的加载时链接,有三种方法 1 LIB文件直接加入到工程文件列表中 在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add F ...
- 一种实现 Java调用C++的DLL的方法
http://topic.csdn.net/t/20020917/14/1030420.html 感谢大家支持,这几天我在IBM中文及SUN官方网站中找了不少关于JNI的文章,受益非浅,希望 ...
- 非托管C++程序中调用C#的dll
刚去的新公司分配了我一个项目需求,将PPT文件(包括*.ppt和*.pptx)转换成多张png图片.由于以前只有native C++的经验,在网上逛了多圈后,发现都是使用C#实现这个功能的,被这个需求 ...
最新文章
- 3 css 奖品出现弹出动画_【技术】nuxt中引入wow和animate.css 页面随滚动条出现动画...
- 做技术的,年龄大了你慌吗?
- python空字典对象相当于false吗_python怎么判断某一对象是否为字典
- 产业企业和投资机会研究(中小板、创业板) 碧水源(300070)创业板
- 测试博客园Markdown 表格
- 12月27日云栖精选夜读:实人认证 - 阿里云实人认证(公测)发布
- JS判断页面控件是否可用
- php代码实现对word文件的查找与替换,ThinkPHP5使用phpword实现文件模板字符替换
- java 类及对象的课后作业_JAVA类和对象课后作业
- content add tpl.php,phpcms后台批量上传添加图片文章方法详解(一)
- 天文学中常用的坐标系
- patran如何看屈曲因子_校准证书中的修正值、修正因子,你真的会用吗?
- TensorFlow 官方文档中文版发布啦(持续维护) 1
- centOS6.4部署svn
- Invisible Perturbations: Physical Adversarial Examples Exploiting the Rolling Shutter Effect 论文解读
- torch 深度学习(5)
- SDN免费快速获得积分和直接获取下载码的几个办法,亲测有效区
- c语言外部中断服务程序设计,手把手教你学单片机的C语言程序设计十二中断服务函数.pdf...
- Caused by: javax.security.auth.login.LoginException: unable to find LoginModule class: com.ibm.secur
- 流程驱动管理vs 数据驱动管理