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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值