Electronic Joint Business

Solution for E-Business

mkmf

利用MKMF编写Ruby扩展

文章评价:
MKMF 可以帮你自动成 Ruby 扩展库的 Makefile,这样生成的.so或.dll链接库,可以直接在 ruby 程序中被引用,鉴于 Ruby 的 Win32API 写得极其糟糕,强烈建议在需要与 Windows API 打交道的时候,直接放弃 Ruby 的 Win32API,而采用 MKMF 来扩展 ruby。

这里,我会着重谈 Windows 平台,因为 Windows 平台提供了大量的 SDK 和详细的文档,可以很快地为 Ruby 扩展出丰富的功能。

MKMF 通常以一个名为extconf.rb的ruby脚本开始,运行该脚本会自动生成编译所需的 Makefile. 简单的看一下extconf.rb的内容,十分简单明了

require ‘mkmf’
# Give it a name
extension_name = ‘bootextract’
# The destination
dir_config(extension_name)
dir_config(extension_name,‘C:/work/Include’,‘C:/work/lib’)
# Do the work
create_makefile(extension_name)

这里着重说一下

dir_config(extension_name,‘C:/work/Include’,‘C:/work/lib’)

第二个参数用来添加编译所需include路径,第三个则是 library 的路径。MKMF 编写的 makefile,不能接受路径中有空格,建议和例子一样,将所需的SDK的头文件和库文件拷贝到不带空格的路径中。

>>> 阅读全文

 

, ,