Visual Studio 2017 + C# + C++ and swig

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32782059/article/details/77966734

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


猜你喜欢

转载自blog.csdn.net/qq_32782059/article/details/77966734