zoukankan      html  css  js  c++  java
  • 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#常用正则表达式
    亲密接触Discuz!NT之架构篇:优良架构 方便网站整合与二次开发
    即时对话,在线对话,QQ,MSN,UC,popo
    C#事务处理
    正则表达式中的特殊字符
    9:38 2009729
    16:43 200981 缓解疲劳的七大唱片 免费短信
    复选框 全选
    9:05 2009721
    9:34 2009728
  • 原文地址:https://www.cnblogs.com/dabaopku/p/2232352.html
Copyright © 2011-2022 走看看