zoukankan      html  css  js  c++  java
  • C#调用C++ DLL 文件

      说来惭愧,都注册一年多了,却没有发表过一篇正式的博文,中间很多学习的过程也没有记录下来。如今到了一个新的环境,也有了学习的机会,一定要把每天的收获记录一下。

      要做的东西需要引用C++编写的DLL,刚开始从网上看到觉得挺麻烦的就没有仔细研究,如今看到别人写的文章,感觉也不是多难。下面分享一下:

    1、整一个DLL

      使用C++创建一个动态库项目,应用程序设置中选择“DLL”

      打开CPPDemo.cpp文件,添加如下代码

      

    #include "stdafx.h"
    extern "C" __declspec(dllexport) int Add(int x, int y) { return x + y; } extern "C" __declspec(dllexport) int Sub(int x, int y) { return x - y; } extern "C" __declspec(dllexport) int Multiply(int x, int y) { return x * y; } extern "C" __declspec(dllexport) int Divide(int x, int y) { return x / y; }

      

      在这里面:extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的(extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。);其次,被它修饰的目标是“C”的。而被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。

          __declspec(dllexport)的目的是为了将对应的函数放入到DLL动态库中。

          extern "C" __declspec(dllexport)加起来的目的是为了使用DllImport调用非托管C++的DLL文件。因为使用DllImport只能调用由C语言函数做成的DLL。

      编译项目,得到CPPDemo.dll

    2、使用C#调用这个DLL

      创建一个C#项目,新建一个CPPDLL类,在类中添加如下代码,就是把要用到的方法重新声明了一下,具体实现代码不用写了。

     public class CPPDLL
        {
            [DllImport("CSharpInvokeCPP.CPPDemo.dll")]
            public static extern int Add(int x, int y);
    
            [DllImport("CSharpInvokeCPP.CPPDemo.dll")]
            public static extern int Sub(int x, int y);
    
            [DllImport("CSharpInvokeCPP.CPPDemo.dll")]
            public static extern int Multiply(int x, int y);
    
            [DllImport("CSharpInvokeCPP.CPPDemo.dll")]
            public static extern int Divide(int x, int y);
    
           
        }
    

      注意1记得要使用DllImport,要引用“System.Runtime.InteropServices”,2、把CPPDemo中生成的DLL文件拷贝到CSharpDemo的bin目录下

      这样在项目中就可以使用DLL的方法了。

    int result = CPPDLL.Add(10, 20);
    

      这只是通过静态方法调用C++里面的函数,对我来说也足够了。暂时就写这些,坚持就是胜利。里面的代码参考了其他人的成果,没有找到作者也不方便说。只想说网络上大家都分享才能进步,如果我写的能帮到你我很高兴。如果你有好的意见,欢迎反馈。

      

      

  • 相关阅读:
    微信小程序
    js
    js
    uni
    uni/微信小程序
    uni/微信小程序
    ES6...扩展运算符(数组或类数组对象)
    微信小程序
    微信小程序
    玩转storm
  • 原文地址:https://www.cnblogs.com/kui0621/p/4055131.html
Copyright © 2011-2022 走看看