0

我正在学习如何编写 Ruby C 扩展,并且我已经通过了最简单的示例。我试图用套接字来实现一些东西,所以我试图创建一个扩展,它将在rb_cIPSocket.

在我的 C 文件的顶部,我有:

#include "rubysocket.h"

我收到:

...s.c:3:31: error: rubysocket.h: No such file or directory

这很可能是这种情况。但是,我尝试了所有可能的路径:

#include "rubysocket.h"
#include "socket/rubysocket.h"
#include "ext/socket/rubysocket.h"
#include <rubysocket.h>
#include <socket/rubysocket.h>
#include <ext/socket/rubysocket.h>

这是我的extconf.rb

require 'mkmf'
dir_config("my_ext")
have_library("c", "main")
create_makefile("my_ext")

等等。我在这里实际上错过了什么?为什么我不能包含那个头文件?我正在使用带有 RVM 和 Ruby 1.9.3-p448 的 OSX。谢谢你。

4

1 回答 1

2

rubysocket.h 住在哪里?如果它位于 ruby​​ 源代码的核心,那么它很可能是 ruby​​ 使用的“私有”,但您可以像...

值 ipSocketClass = rb_const_get("IPSocket");

之类的。GL!

于 2013-07-19T19:59:36.947 回答