一、下載下傳swig程式
http://swig.org/download.html
二、VS2017中建立C# 控制台程式

三、建立C++的動态庫檔案
然後點選“Ok”按鈕,建立C++項目
四、建立C++檔案
檔案cpp_file.h
#pragma once
#define CPP_EXPORTS
#ifdef CPP_EXPORTS
#define CPP_API __declspec(dllexport)
#else
#define CPP_API __declspec(dllimport)
#endif //
class CPP_API cpp_file
{
public:
cpp_file(void);
~cpp_file(void);
int times2(int arg);
};
檔案cpp_file.cpp
#include "cpp_file.h"
cpp_file::cpp_file(void)
{
}
cpp_file::~cpp_file(void)
{
}
int cpp_file::times2(int arg)
{
return arg * 2;
}
然後編譯cpp的項目,是可以編譯通過的。
在cpp_file.h的同一個目錄下,建立swig檔案,cpp_file.i,内容如下:
%module cpp
%{
#include "cpp_file.h"
%}
%include <windows.i>
%include "cpp_file.h"
五、生成csharp和cpp檔案。
swig.exe -csharp -c++ -outdir E:\work\test\testSWIG\csharp\swigcsharp\swig\gen cpp_file.i
六、将cpp_file_wrap.cxx加入到cpp項目,重新編譯
然後将生成的cpp.dll檔案拷貝到csharp項目的bin目錄下。
七、将生成的cpp.cs, cpp_file.cs, cppPINVOKE.cs添加到csharp的項目檔案裡面
八、編寫調用代碼
class Program
{
static void Main(string[] args)
{
cpp_file file = new cpp_file();
int result = file.times2(20);
Console.WriteLine("result = " + result.ToString());
Console.ReadLine();
}
}
九、編譯運作
輸出的結果:
result = 40