文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>swig C# 链接c++ dll

swig C# 链接c++ dll

时间:2011-03-04  来源:SongSharp

先写一个简单过程,防止自己忘记了,以后再详细修改

准备工作:

vs2010 C#,c++ 版本其实不重要,呵呵

登录swig官方,下载 swigwin-2.0.2。以下是下载地址,选择好c#,window 就可以下载

http://www.swig.org/survey.html

解压缩后

设置 系统属性》高级》环境变量》系统变量 下 Path 添加你的解压缩后的目录

我解压E:\后重命名文件夹为swigwin,就在Path 下后面添加  ;E:\swigwin (注意前面有个分号)

现在写一个.h和.cpp

Swiglib.h

代码如下:

#pragma once
class Swiglib
{
public:
 Swiglib(void);
 ~Swiglib(void);
 int AaddB(int a,int b);
};

Swiglib.cpp

代码如下:

#include "Swiglib.h"
Swiglib::Swiglib(void)
{
}
Swiglib::~Swiglib(void)
{
}
int Swiglib::AaddB(int a,int b)
{
 return a+b;
}

(既然看这个,上面的代码就不解释了)

写一个swig使用的.i文件

我想这个算swig的配置文件吧,具体不了解

swig.i(文件名可以自己取,意义不大)

代码如下:

%module ModuleSwiglib
%{
#include "Swiglib.h"
%}
%include "Swiglib.h"

接着cmd

运行swig传入参数,当然,你要保证 swig.i,Swiglib.cpp,Swiglib.h

swig -c++ -csharp -o libswig.cpp -namespace "Swiglib "  -dllimport Swiglib swig.i

解释一下:libswig.cpp 就是以后要编译出来的cpp文件,namespace 就是以后C#要引用的命名空间,生成后可以修改,dllimport 是libswig.cpp 生成出来的dll的名字,以后dll可以重命名来配对,最好能和dll名字一样

不懂继续往下看吧~~

执行以后生成ModuleSwiglib.cs,ModuleSwiglibPINVOKE.cs,libswig.cpp

(注意一下和)

先不管cs文件名称和swig.i中%module ModuleSwiglib一样就知道,前面的%module  的意义了

把libswig.cpp编译成dll文件

 vs,新建项目》选择Win32项目(项目名:swig-test)->选择dll,空项目,项目命名为Swiglib

PS:项目名字要和dllimport 里面写的一样,因为vs生成dll是根据项目名称的,你也可以修改

把libswig.cpp,Swiglib.cpp,Swiglib.h放到工程里面。生成一下,去debug下面去拿dll吧,名字果然是Swiglib.dll

看看ModuleSwiglibPINVOKE.cs中

  [DllImport("libswig", EntryPoint="CSharp_Swiglib_AaddB")]
  public static extern int Swiglib_AaddB(HandleRef jarg1, int jarg2, int jarg3);

这个就是C#调用dll的代码,这个我们也可以调用window API(自己百度谷歌吧)

接着拿着ModuleSwiglib.cs,ModuleSwiglibPINVOKE.cs,Swiglib.dll

把记得要把Swiglib.dll放着系统path目录下或者程序相对目录下。

ModuleSwiglib.cs,ModuleSwiglibPINVOKE.cs应该就是连接Swiglib.dll C#类

然后,就可以

            Swiglib sl=new Swiglib();
            Console.WriteLine(sl.AaddB(1, 2));

因为是事后写的,如有错误大家报错~~

处女作,呵呵,以后再细细补充

公司需要Subversion,目前也在管理Subversion

SVN客户端开源软件很多

感觉管理端的软件非常少,所以开始了解,班余写写代码

对Subversion感兴趣的朋友可以聊聊,我只是刚刚开始

 Subversion非常伟大!

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载