花錢的年華
依舊是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
江南白衣
閱讀(12151)
評論(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等泛高階語言的萬能粘合劑
同意,我認為學那么多語言干什么,沒用?。。?!
科學最重要,而不是技術?。。?/div>
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
<
2009年4月
>
日
一
二
三
四
五
六
29
30
31
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
1
2
3
4
5
6
7
8
9
公告
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
切爾斯基
莊表偉
桃之夭夭
透明
鐵手
非魚
積分與排名
積分 - 1132740
排名 - 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的獲取和為擦拭法站臺(62591)
2.?Python+wxWidgets快速開發桌面小程序(36522)
3.?Nutch 0.8筆記--Google式的搜索引擎實現 (30588)
4.?簡化Spring(1)--配置文件(29329)
5.?我的最小項目管理工具集(25052)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 江南白衣
主站蜘蛛池模板:
18级成人毛片免费观看
|
韩国免费a级作爱片无码
|
**毛片免费观看久久精品
|
亚洲AV成人精品网站在线播放
|
中文字幕在线视频免费
|
亚洲色无码专区在线观看
|
a级在线免费观看
|
亚洲国产综合无码一区
|
无码精品国产一区二区三区免费
|
久久精品亚洲中文字幕无码麻豆
|
最近2022中文字幕免费视频
|
中文字幕乱码免费视频
|
亚洲一级免费毛片
|
午夜a级成人免费毛片
|
亚洲AV网一区二区三区
|
亚洲一区二区三区在线视频
|
中文字幕永久免费视频
|
亚洲三级电影网站
|
久久午夜免费视频
|
激情无码亚洲一区二区三区
|
国精产品一区一区三区免费视频
|
久久精品国产亚洲综合色
|
37pao成人国产永久免费视频
|
国产亚洲精品影视在线
|
久久久久亚洲av毛片大
|
免费污视频在线观看
|
亚洲国产激情在线一区
|
免费人妻av无码专区
|
国偷自产一区二区免费视频
|
亚洲综合久久一本伊伊区
|
亚洲人AV永久一区二区三区久久
|
日韩精品无码免费专区网站
|
亚洲国产精品美女
|
亚洲美女在线国产
|
最近新韩国日本免费观看
|
国产青草亚洲香蕉精品久久
|
国产又大又粗又长免费视频
|
亚洲一区二区在线视频
|
日韩一区二区在线免费观看
|
中文字幕乱理片免费完整的
|
亚洲一级片在线播放
|