一、下载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