花錢的年華
依舊是JavaEE
BlogJava
|
首頁
|
發新隨筆
|
發新文章
|
聯系
|
聚合
|
管理
隨筆:88 文章:0 評論:976 引用:7
SWIG,C/C++類庫與Java,Python等泛高階語言的萬能粘合劑
按照
SWIG
的思路,
C/C++是很優秀的library級代碼語言,而寫界面等方面則是Java、C#、Python們占優。
所以,swig讓你可以在高階語言里調用C/C++寫的類庫,并且不是簡單的跨語言調用,而是把類庫編譯為宿主語言里
Class
這樣的一等公民。
原本擔心這個項目有點邊緣化,一看原來Ruby和Python早就靠它從C/C++里溜東西出來了。對于python, ruby這些家底不厚的新生代來說,C/C++的類庫很有魅惑力。即使是富得不行的Java,也靠swig為
SDL
搞了個
java版
。
1. 實現原理:
比如Java吧,有一個JNI機制可以直接調用C代碼,但要求C代碼需如是:
JNIEXPORT
void
JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv
*
env, jobject obj)
{
printf(
"
Hello world!\n
"
);
return
;
}
SWIG(Simplified Wrapper and Interface Generator) 為你自動生成了這個冗長的wrapper文件和相應的Java類,其中還妥善完成了類型轉換,函數指針、模板這些C++功能在其他語言中的轉換等諸般工作,善舉阿。
2.操作過程:
很簡單,特別在VC里dsp文件都寫好了,把選項設為Release,rebuild一下就搞定。
如果要拆成慢動作,在一個Java項目里是這樣的:
1.編寫interface文件example.i
如果api有頭文件就更簡單了,下面的代碼定義一個example類
%
module example
%
{
#include
"
example.h
"
%
}
%
include
"
example.h
"
2.
swig -java
example.i
生成符合JNI語法(見上)的C文件: example_wrap.c
生成Java類文件:exampleJNI.java,example.java
3.VC把example_wrap.c 和example.c 打包成dll.
4.在普通java程序里使用example.java
System.loadLibrary(
"
example
"
);
int
i
=
new
Example().add(
42
,
105
);
3.總結
當你山窮水盡,準備要重新發明輪子的時候,總該想起有個
swig
,可以把C/C++的輪子,換裝到你的語言上。
發表于 2005-10-24 18:24
江南白衣
閱讀(12150)
評論(8)
編輯
收藏
所屬分類:
全部文檔
評論
#
SWIG,C/C 類庫與Java,Python等泛高階語言的萬能粘合劑[TrackBack]
Ping Back來自:blog.csdn.net
[引用提示]hawkxjy引用了該文章, 地址:
http://blog.csdn.net/hawkxjy/archive/2005/10/25/516550.aspx
hawkxjy
評論于 2005-10-25 21:37
回復
更多評論
#
re: SWIG,C/C++類庫與Java,Python等泛高階語言的萬能粘合劑
為什么這個網絡世界的頂級C++高手。黑客,不做個超級的編譯器使C++也可以跨平臺,也可以在網絡上暢想,為什么呢????對于我,我真的感覺到寫代碼的是被商家所玩弄著,今天搞WIN,明天搞LINUX,api也不同,搞什么都要不同的語言,浪費著寶貴的時間……
思考ing……
尋夢者……
評論于 2005-10-26 15:40
回復
更多評論
#
re: SWIG,C/C++類庫與Java,Python等泛高階語言的萬能粘合劑
同意,我認為學那么多語言干什么,沒用!!!!
科學最重要,而不是技術!!!
yanglightning
評論于 2005-10-26 21:43
回復
更多評論
#
re: SWIG,C/C++類庫與Java,Python等泛高階語言的萬能粘合劑
同意樓上的,掌握科學之后,你可以無休止的從最底層寫一些只有你一個人會用的東西,這才是高手風范
至于那些只會去學習別人東西的人,那就是垃圾,我明天就寫一個比那個更好的給你看看
垃圾
評論于 2005-10-27 09:53
回復
更多評論
#
re: SWIG,C/C++類庫與Java,Python等泛高階語言的萬能粘合劑
嗯?這里什么時候變了CSDN式的留言本了...
江南白衣@ITO
評論于 2005-10-27 10:04
回復
更多評論
#
re: SWIG,C/C++類庫與Java,Python等泛高階語言的萬能粘合劑
SWIG 沒那么好用,在把Python當成腳本嵌入到一個C++的程序中的時候,開始的時候使用SWIG,他可以幫你調用函數,但是對象的傳遞就是一個非常麻煩的事情,他生成的代碼很難讀,效率也不太好。所以后來還是自己做的嵌入。
JJ
評論于 2005-10-28 11:42
回復
更多評論
#
re: SWIG,C/C++類庫與Java,Python等泛高階語言的萬能粘合劑
SWIG好像只可以把C/C++轉換成別的高級語言吧, 沒聽說SWIG可以幫助把高級語言嵌入C/C++@JJ
JRUV
評論于 2008-03-03 18:36
回復
更多評論
#
re: SWIG,C/C++類庫與Java,Python等泛高階語言的萬能粘合劑[未登錄]
@yanglightning
科學是什么?科學==nothing
coffee
評論于 2009-04-23 17:40
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
轉戰微博去了
一次Java垃圾收集調優實戰
架構師書單
Spring2.0,Struts2.0,SpringSide 2.0--SpringSide 2.0M1 Release Notes
給編程狂熱者的ant task筆記
QuickServer--在吵鬧的環境里快速搭建自己的TcpServer(Pragmatic系列)
Nutch 0.8筆記--Google式的搜索引擎實現
SpringSide 1.0 M3-All in one 發布
Prototype.js--Javascript編寫者的小軍刀
2006年中 My Favorite Java Site
<
2005年10月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
公告
Springside 春天的旁邊
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
隨筆分類
Spring(13)
(rss)
SpringSide(14)
(rss)
全部文檔(65)
(rss)
架構師(2)
(rss)
資源八卦(12)
(rss)
隨筆檔案
2011年5月 (1)
2010年8月 (1)
2010年6月 (1)
2010年5月 (1)
2009年11月 (1)
2009年9月 (1)
2009年5月 (1)
2009年4月 (1)
2009年3月 (3)
2009年2月 (1)
2009年1月 (1)
2008年7月 (4)
2008年6月 (1)
2008年5月 (2)
2007年2月 (1)
2006年11月 (1)
2006年9月 (1)
2006年8月 (3)
2006年6月 (3)
2006年4月 (3)
2006年3月 (3)
2006年2月 (1)
2006年1月 (5)
2005年12月 (6)
2005年11月 (12)
2005年10月 (9)
2005年9月 (4)
2005年8月 (11)
朋友
Canonical
Cyt
David.turing
Dlee
DreamHead
Dudu
Femto
Java自由人
Michale Chen
Scud
Simon Lei
Totodo
Xiecc
切爾斯基
莊表偉
桃之夭夭
透明
鐵手
非魚
積分與排名
積分 - 1132640
排名 - 26
最新評論
1.?re: Java5泛型的用法,T.class的獲取和為擦拭法站臺
過了10多年,我又遇到這個問題,居然找到的是我自己當年發現的方法。
--差沙
2.?re: Ilog、Drools、Jess規則引擎的Rule Language 對比
; Fact templates
前面有個分號的??
--wffger
3.?re: SpringSide 3.3.3 大眾搬屋版
SpringSide它已經實現了增刪查改,分頁等這些你都不用自己寫了。值得研究一下它的代碼。
--好鄰居官網
4.?re: Spring2.0,Struts2.0,SpringSide 2.0--SpringSide 2.0M1 Release Notes
評論內容較長,點擊標題查看
--zuidaima
5.?re: Spring下的Unit Test筆記
評論內容較長,點擊標題查看
--zuidaima
閱讀排行榜
1.?Java5泛型的用法,T.class的獲取和為擦拭法站臺(62589)
2.?Python+wxWidgets快速開發桌面小程序(36522)
3.?Nutch 0.8筆記--Google式的搜索引擎實現 (30588)
4.?簡化Spring(1)--配置文件(29326)
5.?我的最小項目管理工具集(25049)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 江南白衣
主站蜘蛛池模板:
国产成人久久精品亚洲小说
|
中文字幕亚洲第一
|
亚洲六月丁香六月婷婷色伊人
|
中文字幕免费在线看电影大全
|
亚洲第一永久AV网站久久精品男人的天堂AV
|
亚洲精品国产手机
|
国产亚洲精品无码拍拍拍色欲
|
免费看黄网站在线看
|
亚洲欧洲美洲无码精品VA
|
久久爰www免费人成
|
亚洲色偷偷综合亚洲av78
|
亚洲级αV无码毛片久久精品
|
美女被cao网站免费看在线看
|
亚洲图片中文字幕
|
亚洲一区二区视频在线观看
|
免费福利在线视频
|
亚洲丰满熟女一区二区哦
|
亚洲精品无码久久久影院相关影片
|
丝袜捆绑调教视频免费区
|
亚洲毛片av日韩av无码
|
亚洲欧洲免费无码
|
a毛片免费观看完整
|
韩国免费A级毛片久久
|
亚洲欧美国产国产综合一区
|
成人毛片免费观看视频
|
a级毛片在线视频免费观看
|
日本亚洲成高清一区二区三区
|
亚洲美女aⅴ久久久91
|
www.亚洲精品
|
亚洲成a人片在线观
|
久久免费观看国产99精品
|
亚洲人色婷婷成人网站在线观看
|
久久夜色精品国产噜噜亚洲a
|
免费国产成人高清在线观看麻豆
|
一区二区在线免费视频
|
亚洲精品电影天堂网
|
免费国产a国产片高清网站
|
热99RE久久精品这里都是精品免费
|
亚洲av中文无码乱人伦在线播放
|
亚洲中文字幕无码一区
|
污污污视频在线免费观看
|