swig示例

http://prdownloads.sourceforge.net/swig/swigwin-3.0.12.zip地址,下载windows版本的swig 3.0.12,解压到C:\,查看版本


 

建立文本文件pjsua.i ,有枚举、结构、函数等内容,如下:

%module pjsua

 

%{

#include "pjsua.h"

%}

 

enum pj_tyler_t {PJ_XING =0x01,PJ_MING=0x02};

 

typedef struct pj_tyler_struct

{

 short freq1;

  intfreq2;

 char name[11];

} pj_tyler_struct;

 

extern int add(int a,int b);

extern int sub(int a1,int b1);

上述文件中,%module pjsua,表示用pjsua模块名生成C#文件和C文件以此命名。%{ %}之间部分(#include test.h)直接输出到C文件。

命令行运行swig生成C#文件


以模块名pjsua命名,生成了C#的类文件和C语言的包装文件pjsua_wrap.c。 pjsua.i文件中声明的枚举、结构、函数,要在C语言中相关文件(新建pjsua.h、pjsua.c)实现:定义的枚举pjtyler_t和结构pj_tyler_struct存放在pjsua.h中,两个函数add、sub存放在pjsua.c。

 

pjsua.h文件内容如下:

enum pj_tyler_t {PJ_XING =0x01,PJ_MING=0x02};

 

typedef struct pj_tyler_struct

{

 short freq1;

  intfreq2;

 char name[11];

} pj_tyler_struct;

 

pjsua.c文件内容如下:

int add(int a,int b)

{

         returna+b;

}

int sub(int a,int b)

{

         returna-b;

}

 

进入VS2015的命令行方式


运行cl.exe命令,编译pjsua.c、pjsua_wrap.c,生成pjsua.dll


编写测试类,test.cs

public class test{

         publicstatic void Main(string[] args){

                   intii=pjsua.add(2,3);

                   System.Console.WriteLine("2+3={0}",ii);

         }

}

编译test.cs与生成的其它cs。因为cl命令编译c文件生成的dll为32位,需要在csc命令中加入平台相关参数,否则test.dll调用pjsua.dll时会出错。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值