C#呼叫 C++的DLL

無名_四葉草發表於2020-04-05

C#使用CLR/C++的DLL間接呼叫Native C++的DLL

步驟如下:

  1. 建立一個C#的Console Application工程-->命名“ConsoleApplication1”。
  2. 建立一個CLR/C++的工程,右擊“ConsoleApplication1”上面的“Solution 'ConsoleApplication1'”-->Add-->NewProject-->CLR-->Class Library -->命名“NetCpp”。
  3. 建立一個Native C++工程,同上,右擊-->Add --> NewProject -->Win32 -->Win32 Project

             -->命名“NativeCpp”-->Next-->選擇"DLL"-->Export symbols.


  4. 開啟"NativeCpp.h"在其中加入一些成員函式與變數;
    #define NATIVECPP_API __declspec(dllexport)
    // This class is exported from the NativeCpp.dll
    class NATIVECPP_API CNativeCpp {
    public:
    CNativeCpp(void);
    // TODO: add your methods here.
    int getA()
    {
      return 20;
    }
    };

  5. 在NetCpp工程中引用NativeCpp的DLL;

    右擊NetCpp工程-->Properties

    C#使用CLR/C++的DLL間接呼叫Native <wbr>C++的DLLC#使用CLR/C++的DLL間接呼叫Native <wbr>C++的DLLC#使用CLR/C++的DLL間接呼叫Native <wbr>C++的DLL
  6. 開啟CLR/C++工程的"NetCpp.h",加入#include "NativeCpp.h"
    #include "NativeCpp.h"
    using namespace System;
    namespace NetCpp {
    public ref class Class1
    {public:
    int getB()
    {
    CNativeCpp a;
    return a.getA();
    }
    };
    }

  7. 右擊ConsoleApplication1工程的References-->Add Reference-->Projects-->選擇"NetCpp"

            再把Native C++產生的DLL複製到C#工程的bin\\Debug\\目錄下.(若想在修改了NativeC++程式碼後動態的更新Native C++DLL,需要在C#工程的屬性中設定:PropertiesàBuild EventsàPost-build event command line:寫入命令:copy  $(SolutionDir)Debug\NativeCpp.dll   $(TargetDir)    


  8. 開啟ConsoleApplication1工程program.cs。
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    NetCpp.Class1 cl = new NetCpp.Class1();
    Console.WriteLine("getA()" + c1.getB().ToString());
    Console.Read();
    }
    }
    }

相關文章