美文网首页
C# 静态调用C++ 生成的dll,即非托管dll

C# 静态调用C++ 生成的dll,即非托管dll

作者: 堆石成山 | 来源:发表于2019-07-06 16:08 被阅读0次

C++文集板块有一节《C++ 如何生成一个DLL动态链接库》已经讲述了,C++如何生成一个动态链接库CPPDLLDemo.dll,本节将讲述如何用C#来调用该CPPDLLDemo.dll.

1、为简单起见直接创建C# 控制台程序来调用该dll.


创建控制台程序

2、首先用DllImport的方式添加需要调用dll中的方法,所以需要事先知道dll中的方法与参数。
添加using:

using System.Runtime.InteropServices;

在类下一级添加调用dll的方法与参数:

//调用C++的dll,即非托管dll的加法
[DllImport("CPPDLLDemo.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
extern static int add(ref int a,ref int b);//注意C++函数原型为指针*x.*y的参数,这里需用ref,如果是返回值是指针就不需要
//调用C++的dll中的减法
[DllImport("CPPDLLDemo.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
extern static int sub(int a, int b);

3、在main中声明参数并调用方法

  static void Main(string[] args)
        {
            int a = 222;
            int b = 111;

            int resultAdd = add(ref a,ref b);
            int resultSub = sub(a,b);
            Console.WriteLine(a.ToString() + "+" + b.ToString() + "=" + resultAdd.ToString());
            Console.WriteLine(a.ToString() + "-" + b.ToString() + "=" + resultSub.ToString());
            Console.Read();
        }

4、运行得出结果:(注意要把C++的dll拷贝到该程序的根目录下)


运行结果

相关文章

  • c# 调用 C++ dll 传入传出 字符串

    C#调用 非托管C++ dll 传入Stringbuilder、ref string 、 ref char 等都报...

  • C# 静态调用C++ 生成的dll,即非托管dll

    C++文集板块有一节《C++ 如何生成一个DLL动态链接库》已经讲述了,C++如何生成一个动态链接库CPPDLLD...

  • C#调用OpenCV函数的实现

    C#调用OpenCV函数的实现步骤:1、C++编写调用OpenCV函数的方法,编译成dll;2、C#引用C++生成...

  • DLL调用

    使用VS2012生成DLL文件(1)在C++中调用DLL中的函数(2)在C++中调用DLL中的函数(3)在VS20...

  • C# 调用非托管DLL

    C#高用非托管代码4种方法: 1,通过平台调用(Platform Invoke, P/Invoke)来调用非托管D...

  • C#与C++类型互转

    一、C#调用DLL文件时参数对应表 二、C#调用C++编写的DLL函数, 以及各种类型的参数传递 如果函数只有传入...

  • C++和C#混合编程

    最近需要利用C++和C#混合编程,然后就写了一个C#调用C++生成的DLL的DEMO。困扰我好久的就是C#中str...

  • C++调用dll C#调用dll

    c++调用dll方法 如果运行时提示找不到dll,或者加载失败,可以修改程序属性-常规-项目默认值-字符集 改成使...

  • C++ 编译 DLL 动态链接库

    C++ 编译 DLL ,有托管、非托管 两种模式,这里只讨论非托管。 环境: 系统:windows 10编译器:M...

  • C++编写dll与调用

    重要参考 c++ dll编写与加载;C++编程笔记:dll的生成与使用;8.DLL导出C++类; 在 Visual...

网友评论

      本文标题:C# 静态调用C++ 生成的dll,即非托管dll

      本文链接:https://www.haomeiwen.com/subject/xqgphctx.html