查看: 3223|回复: 13

[有事请教] ruby的C扩展编译过程卡了几天,求解

[复制链接]
梦石
0
星屑
707
在线时间
69 小时
注册时间
2012-5-24
回帖
33
发表于 2016-6-7 20:07:44 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
首先请多包涵,这个问题去ruby社区问大概不够高端,但是对于非专业的我已经很难再解决下去了。
目前是xp系统,还没用win7试更多版本。几天当中我已经试过了mingw3.1与vc++6,ruby2.0.0与1.8.6。
使用vc++的nmake途径的话,1.8.6生成的makefile弄起来没有报错,但是只会生成到.exp与.lib两个文件,没有出现dll;2.0.0则会报U1000错误。
直接使用vc++自造dll的话,头文件的情况似乎很纠结,采用ruby1.8.6的i386文件夹下的ruby.h不会报任何缺失,但方法调用都会报LNK2001错误,仿佛不该用这个文件,而我用ruby-1.8.6那个文件夹下的ruby.h的话头文件有很多缺失,并且某些头文件似乎不是正常存在的。mingw3.1在处理makefile的时候也会报错,时间稍长我记不清内容了。

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2016-6-7 20:29:15 | 显示全部楼层
本帖最后由 taroxd 于 2016-6-7 20:30 编辑

建议去 ruby 社区问吧。这里应该没多少人有能力解决你的问题

1. 你用的 ruby 版本是?编译扩展要用编译 ruby 时用的那个编译器。如果是 rubyinstaller 安装的,请安装配套的 devkit,里面有 mingw。
2. 编译出来的结果应该是 so 而不是 dll
3. 尽量不要使用 XP 系统
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2016-6-8 04:08:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

梦石
0
星屑
5615
在线时间
2571 小时
注册时间
2011-9-27
回帖
1059

极短23参与开拓者

发表于 2016-6-8 06:49:26 | 显示全部楼层
我什么也听不懂,就听说ruby在windows下各种不灵光。  好像xp下到2.1版本就没法安装运行了似的。
从平淡走向更平淡。
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2016-6-8 07:27:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

梦石
0
星屑
5615
在线时间
2571 小时
注册时间
2011-9-27
回帖
1059

极短23参与开拓者

发表于 2016-6-8 11:54:37 | 显示全部楼层
请问 “无法定位程序输入点 _gmtime64_s 于动态链接库  msvcrt.dll 上"是什么意思?
我安装新版ruby就是遇到这个毛病。

点评

缺少VC运行库  发表于 2016-6-8 12:11
从平淡走向更平淡。
回复

使用道具 举报

梦石
0
星屑
707
在线时间
69 小时
注册时间
2012-5-24
回帖
33
 楼主| 发表于 2016-6-10 11:21:03 | 显示全部楼层
taroxd 发表于 2016-6-7 20:29
建议去 ruby 社区问吧。这里应该没多少人有能力解决你的问题

1. 你用的 ruby 版本是?编译扩展要用编译 ru ...

是的,编译出了so。我看到不止一处说windows下干这个应当出现dll,另一方面我听说so是linux下使用的,请问需要什么后续步骤吗
回复

使用道具 举报

梦石
0
星屑
707
在线时间
69 小时
注册时间
2012-5-24
回帖
33
 楼主| 发表于 2016-6-10 11:24:52 | 显示全部楼层
晴兰 发表于 2016-6-8 04:08
事实上要生成C扩展不止是extconf/mkmf一种办法,(而且我也没用过这种)

敢问还有哪种方法?我也提到了用vc自制dll的头文件问题,不会用这个方法。

评分

参与人数 1星屑 -3 收起 理由
三途亚梦 -3 请注意不要连贴哦

查看全部评分

回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2016-6-10 11:27:42 | 显示全部楼层
dieforlife 发表于 2016-6-10 11:21
是的,编译出了so。我看到不止一处说windows下干这个应当出现dll,另一方面我听说so是linux下使用的,请 ...

windows 可以使用 so 库。编译出 xxx.so 的话,就直接 require 'xxx' 就好了

点评

多谢,没问题了。之前试过require那个so,或许犯了什么文明用语的错误。  发表于 2016-6-10 14:00
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2016-6-10 18:26:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部