Perl 板


LINE

LiloHuang 於 2008 春 1. 前言 稍微熟悉 Perl 的人都瞭解,Perl 本身有許多的模組都是使用C語言或者C++撰寫的。 如果今天想要提昇部份程式代碼的速度,或者因為部份代碼不想被人看到進而保護,你 就可以選擇使用 perlxs 的方式來進行撰寫的動作。 自行撰寫 perlxs 非常簡單,只要你具備 C語言或者C++的基礎即可簡單上手,但對於 新手而言,困難的是開發環境的建置,在此小弟做個簡單的介紹,分享一些經驗給大家。 2. 開發環境 a. Microsoft Visual C++ 編譯環境 使用 VC++ 6.0 版本,由於微軟後期的 VC++ 非常邪惡,使用了.manifest檔案 來控制執行 dll 時要載入的 C++ RunTime Library。因此我們如果想純粹使用 VC++ 來編譯的,那就只能透過 VC++ 6.0 才能正常編譯。 當然,還是有辦法可以讓 VC++ 7.1、8.0,甚至最新的 VS 2008 的9.0 運作, 不過方式非常繁雜,小弟認為還是別搞了吧,有興趣在詢問這個部份怎樣處理。 b. MinGW + ExtUtils::FakeConfig 編譯環境 安裝適合的 gcc 或 g++ 開發環境,如果你偏好使用 Dev C++ 當然也可以, 記得安裝後把編譯器下的 bin 目錄加到作業系統的 PATH 環境變數中方便編譯, 當然 Windows SDK 不能少,要不然會不能編譯。 3. 模組撰寫 在這邊我們選擇 b 方案 (你得先裝好 ExtUtils::FakeConfig 模組 與 nmake) 並且使用 h2xs 做一個非常簡單的範例,就來寫一個簡單的求最大值動作, 步驟如下: a. 首先透過 cmd.exe,找一個空白資料夾,輸入 h2xs -A -n TestMAX b. 此時會產生一個資料夾為 TestMAX,進入裡面有一堆檔案是我們剛剛產生的 c. 透過任何一個編輯器打開 TestMAX.xs 這個檔案,這邊開始我們嘗試撰寫 一個簡單的求最大值程式,將以下的程式碼加到 TestMAX.xs 的尾巴: int MAX(int a, int b) CODE: RETVAL = (a > b) ? a : b; OUTPUT: RETVAL d. 輸入 perl -MConfig_m Makefile.PL 來產生 Makefile e. 使用 nmake 進行編譯 nmake test 進行測試 nmake install 進行安裝 f. 撰寫一個簡單的 Perl程式: use TestMAX; print TestMAX::MAX(100, 20); g. 此時輸出應該為 100,因為他是一個比較大的值 4. 注意事項 a. 安裝 nmake 時可以 google 找一下 nmake15.exe,放置到 system32 下面,並且 更改名稱為 nmake.exe b. 缺少 Windows SDK 的請上微軟網站抓取。 c. 記得 PATH 要指定,否則無法直接使用 gcc 與 g++ 等指令。 d. 更多細節請查閱 perldoc 有關 perlxstut、perlxs、xsubpp、perlguts 等資訊。 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.169.157.34 ※ 編輯: LiloHuang 來自: 218.169.157.34 (02/08 17:21)
1F:推 clkao:使用strawberry perl的話 在win32就直接tool chain都有囉 02/08 17:52
2F:→ LiloHuang:我提供的方式是給 Active Perl 用的 XD 02/08 18:34
3F:→ LiloHuang:有興趣的板友也可以試試 clkao 大的那個直譯器版本 02/08 18:35
4F:→ LiloHuang:http://perl.g.hatena.ne.jp/bosh/20070911/p1 附件參考 02/08 22:37
5F:→ LiloHuang:另外..若使用Perl5.61以上版本請修改Makefile中的 02/08 23:22
6F:→ LiloHuang:將 PERL_ARCHIVE 修改為 $(PERL_INC)\perl58.lib 02/08 23:22







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP