Project1

标题: ruby的C扩展编译过程卡了几天,求解 [打印本页]

作者: dieforlife    时间: 2016-6-7 20:07
标题: ruby的C扩展编译过程卡了几天,求解
首先请多包涵,这个问题去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的时候也会报错,时间稍长我记不清内容了。
作者: taroxd    时间: 2016-6-7 20:29
本帖最后由 taroxd 于 2016-6-7 20:30 编辑

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

1. 你用的 ruby 版本是?编译扩展要用编译 ruby 时用的那个编译器。如果是 rubyinstaller 安装的,请安装配套的 devkit,里面有 mingw。
2. 编译出来的结果应该是 so 而不是 dll
3. 尽量不要使用 XP 系统
作者: 晴兰    时间: 2016-6-8 04:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: 怕鼠的猫    时间: 2016-6-8 06:49
我什么也听不懂,就听说ruby在windows下各种不灵光。  好像xp下到2.1版本就没法安装运行了似的。

作者: 晴兰    时间: 2016-6-8 07:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: 怕鼠的猫    时间: 2016-6-8 11:54
请问 “无法定位程序输入点 _gmtime64_s 于动态链接库  msvcrt.dll 上"是什么意思?
我安装新版ruby就是遇到这个毛病。

作者: dieforlife    时间: 2016-6-10 11:21
taroxd 发表于 2016-6-7 20:29
建议去 ruby 社区问吧。这里应该没多少人有能力解决你的问题

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

是的,编译出了so。我看到不止一处说windows下干这个应当出现dll,另一方面我听说so是linux下使用的,请问需要什么后续步骤吗
作者: dieforlife    时间: 2016-6-10 11:24
晴兰 发表于 2016-6-8 04:08
事实上要生成C扩展不止是extconf/mkmf一种办法,(而且我也没用过这种)

敢问还有哪种方法?我也提到了用vc自制dll的头文件问题,不会用这个方法。
作者: taroxd    时间: 2016-6-10 11:27
dieforlife 发表于 2016-6-10 11:21
是的,编译出了so。我看到不止一处说windows下干这个应当出现dll,另一方面我听说so是linux下使用的,请 ...

windows 可以使用 so 库。编译出 xxx.so 的话,就直接 require 'xxx' 就好了
作者: 晴兰    时间: 2016-6-10 18:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: dieforlife    时间: 2016-6-10 21:07
晴兰 发表于 2016-6-10 18:26
你还可以直接编译,LNK2001是缺少实现,不是缺头文件,而是缺lib文件
如果是VC且缺少lib文件的话,先用pe ...

不好意思还要请教一下,如果你在rm上用过这种手段,它涉及到了更特殊的设置吗?我在外面测试正常的库并不会被任何一版rm接受
作者: 晴兰    时间: 2016-6-10 23:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: dieforlife    时间: 2016-6-11 09:42
晴兰 发表于 2016-6-10 23:57
RM没导出有关符号,比如我提到的rb_define_module_function,而这是一个正常环境的插件必需的。

我现在 ...

如果说清楚比较费力就算了,我只是想让某些操作更高效一点
作者: 晴兰    时间: 2016-6-11 14:02
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1