前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019-01-28 swig入门

2019-01-28 swig入门

作者头像
oracle3
发布2022-05-13 08:30:13
3920
发布2022-05-13 08:30:13
举报
文章被收录于专栏:oracle3技术大杂烩

swig可以自己包装c代码给其他语言使用,对应java就是包装为jni,这里简单描述各平台使用方法

1、ubuntu平台

代码语言:javascript
复制
git clone https://github.com/swig/swig.git
cd swig/
./autogen.sh
./configure --without-pcre
make

编译成功后,测试一下example

代码语言:javascript
复制
cd Examples/java
cd simple/
make
java -Djava.library.path=./ runme
The gcd of 42 and 105 is 21
Foo = 3.0
Foo = 3.1415926

2、win10平台+vs2015

2.1、下载

https://sourceforge.net/projects/swig/

2.2、配置

设置环境变量: JAVA_INCLUDE = %JAVA_HOME%\include JAVA_BIN = %JAVA_HOME%\bin 添加路径: D:\download\swigwin-3.0.12

2.3、打开dsp编译example.dll

对于目录中有example.dsp文件的,我们可以直接用vc2015打开,并且新建64位平台编译,设置项目属性中c++-->常规—>调试信息格式—>选择“程序数据库(/Zi)”或“无” 然后直接编译就可以可以得到example.dll 如果没有,就需要按下面的步骤操作:

2.4、自己编译example.dll

代码语言:javascript
复制
cd D:\download\swigwin-3.0.12\Examples\java\callback
swig -c++ -java example.i

打开vs2015新建Win32 Console Application工程,选择空项目,Application type选择DLL 将example.cxx,example_wrap.cxx添加到源文件 设置工程属性,选择平台x64,在属性页/配置属性/vc++目录中添加包含目录 C:\Program Files\Java\jdk1.8.0_101\include C:\Program Files\Java\jdk1.8.0_101\include\win32 编译生成dll文件,把dll复制到D:\download\swigwin-3.0.12\Examples\java\callback目录,并改名为example.dll

2.5、执行

代码语言:javascript
复制
javac runme.java
java -Djava.library.path=./ runme

Adding and calling a normal C++ callback
----------------------------------------
Callback::run()
Callback::~Callback()

Adding and calling a Java callback
------------------------------------
JavaCallback.run()
Callback::~Callback()

java exit

3、win10平台+mingw

代码语言:javascript
复制
swig -java -c++ example.i 
g++ -Wall -Wl,--kill-at -I "%JAVA_HOME%/include" -I "%JAVA_HOME%/include/win32" -shared -s -o example.dll *.cxx 
javac -d . *.java
java -cp . runme

结果显示

代码语言:javascript
复制
Adding and calling a normal C++ callback
----------------------------------------
Callback::run()
Callback::~Callback()

Adding and calling a Java callback
------------------------------------
JavaCallback.run()
Callback::~Callback()

java exit
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、ubuntu平台
  • 2、win10平台+vs2015
  • 2.1、下载
  • 2.2、配置
  • 2.3、打开dsp编译example.dll
  • 2.4、自己编译example.dll
  • 2.5、执行
  • 3、win10平台+mingw
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档