swig编译c++成c#代码
目录:
1、下载swig编译版本(含swig.exe文件);
下载地址(点击直接下载):https://nchc.dl.sourceforge.net/project/swig/swigwin/swigwin-3.0.12/swigwin-3.0.12.zip
解压,添加环境变量 如:F:\swigwin (路径包含swig.exe)
2、创建c++工程(dll工程项目);
1、新建项目:
2、在空文件的头文件处添加类:
3、添加文件结构 如图:(添加idl文件,可更改为.i文件,也可不更改)
4、person.h code:
#pragma once
class person
{
public:
person(void);
person(int birthYear);
int GetBirthYear();
~person(void);
private:
int m_BirthYear;
};
5、person.cpp code:
#include "person.h"
person::person(void)
{
m_BirthYear=0;
}
person::person(int birthYear)
{
m_BirthYear=birthYear;
}
int person::GetBirthYear()
{
return m_BirthYear;
}
person::~person(void)
{
}
6、.i文件(.idl) code:
%module swigcsharpdll
%{
#include "person.h"
%}
%include "person.h"
7、添加swig 命令行:
swig code:
swig -c++ -csharp -o swig_wrap.cpp -namespace "swigcharp_person" -outdir "D:\runmapniik\swigcsharp\swigcsharp" -dllimport swigcsharpdll swigconfig.i
# swig_wrap.cpp :用于生成c#调用的dll的名称(c++项目中的)
# namespace :生成的c#项目的命名空间
# -outdir :生成的 .cs文件位置(*.cs) .cpp文件(swig_wrap.cpp)位置
# -dllimport : c#工程用于映射(类似于c#的引用)的c# dll
# swigconfig.i :生成c#文件的规则文件
(注:报错时,请检查参数是否输入错误,没有解决,请使用cmd命令执行以上 swig code)
8、点击生成:
9、将swig_wrap.cpp添加到c++项目中,再次重新生成:(生成结果:)
3、修改DLL名称
更改生成dll文件名称为 swigcsharpdll(.i文件中的%module swigcsharpdll)
4、创建c#工程,添加生成的*.cs文件
将生成的cs文件添加到c#工程中:
5、测试-运行程序
测试code:
person ps = new person(18);
Console.WriteLine("我今年"+ ps.GetBirthYear()+"岁");
Console.ReadKey();
运行结果:
dome下载:传送门
写在最后:
文章来源于项目实践;文章存在问题请指正,谢谢您的阅读;
转载请注明来源,谢谢!