swig C#鏈接c++ dll

http://www.cyqdata.com/cnblogs/article-detail-31713

想要用C#開發Subversion,當只有c/c++開源API,所以決定根據Subversion的要求使用swig

先寫一個簡單過程,防止自己忘記了,以後再詳細修改

準備工作:

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非常偉大!

作者: SongSharp 發表於 2011-03-04 09:46 原文鏈接


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章