1. 程式人生 > >筆記:在C#程式中呼叫C++編寫的類

筆記:在C#程式中呼叫C++編寫的類

  1. 假設C++中有一個類c定義如下:
    class c {
    private:
    	int count;
    public:
    	void add(int n);
    	int get();
    };
    
    其中add函式定義如下:
    void C:: add(int n){
    	count += n;
    }
    
    get函式定義如下:
    int C:: get(int n){
    	return count;
    }
    
  2. 在C++工程中增加介面函式,根據需要,通過返回值和引數傳遞物件指標,在函式體中通過物件指標呼叫成員函式,以此實現對類的操作。在C++工程中增加介面函式,根據需要,通過返回值和引數傳遞物件指標,在函式體中通過物件指標呼叫成員函式,以此實現對類的操作:
    extern
    "C" __declspec(dllexport) c* establishC() { c* obj1 = new c; return obj1; } extern"C" __declspec(dllexport) void addCount(c* obj1, int n) { obj1->add(n); return obj1; } extern"C" __declspec(dllexport) int getCount(c* obj1) { return obj1->get(); }
  3. 在C#中新增如下程式碼 :
    public class
    c { [dllimport "filename.dll"] public static extern IntPtr establishC(); [dllimport "filename.dll"] public static extern void addCount(IntPtr obj1, int n); [dllimport "filename.dll"] public static extern int getCount(IntPtr obj1); }
  4. 此時,可以在C#中以如下方式呼叫c++中的類c了:
    IntPtr obj;
    obj =
    c.establishC(); c.addCount(1); int num = c.getCount();