设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2609|回复: 13
打印 上一主题 下一主题

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

[复制链接]

Lv2.观梦者

梦石
0
星屑
707
在线时间
69 小时
注册时间
2012-5-24
帖子
37
跳转到指定楼层
1
发表于 2016-6-7 20:07:44 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
首先请多包涵,这个问题去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的时候也会报错,时间稍长我记不清内容了。
头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

14
发表于 2016-6-11 14:02:25 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
707
在线时间
69 小时
注册时间
2012-5-24
帖子
37
13
 楼主| 发表于 2016-6-11 09:42:02 | 只看该作者
晴兰 发表于 2016-6-10 23:57
RM没导出有关符号,比如我提到的rb_define_module_function,而这是一个正常环境的插件必需的。

我现在 ...

如果说清楚比较费力就算了,我只是想让某些操作更高效一点
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

12
发表于 2016-6-10 23:57:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
707
在线时间
69 小时
注册时间
2012-5-24
帖子
37
11
 楼主| 发表于 2016-6-10 21:07:06 | 只看该作者
晴兰 发表于 2016-6-10 18:26
你还可以直接编译,LNK2001是缺少实现,不是缺头文件,而是缺lib文件
如果是VC且缺少lib文件的话,先用pe ...

不好意思还要请教一下,如果你在rm上用过这种手段,它涉及到了更特殊的设置吗?我在外面测试正常的库并不会被任何一版rm接受
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

10
发表于 2016-6-10 18:26:02 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

9
发表于 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
回复 支持 反对

使用道具 举报

Lv2.观梦者

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

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

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

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

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

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5463
在线时间
2562 小时
注册时间
2011-9-27
帖子
1120

极短23参与开拓者

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

点评

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

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-19 02:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表