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灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP