尝试使用SWIG将C ++编译为Ruby时,没有这样的文件或目录“ruby / config.h”

时间:2014-03-10 20:34:33

标签: c++ ruby windows swig

我正在尝试使用SWIG运行将C ++文件转换为Ruby的基本示例。我安装了Ruby 2.0.0p451(64位版本),我还安装了64位DevKit。我正在运行Windows 7并尝试使用swigwin-2.0.12。最后,我使用Mingw-builds提供的GCC C ++编译器用于64位版本的Windows。

我有基本的C ++ hello world程序,如下所示。

#include <iostream>
#include <cstdlib>

using namespace std;

main()
{
    cout << "Hello World!";
    system("pause");
    return 0;
}

在命令提示符下,我使用命令:

swig -module -c++ -ruby hello_world.cpp

这样就可以了,并生成一个名为 hello_world_wrap.cxx 的文件。但是,当我尝试使用以下命令编译.cxx文件时收到错误:

g++ -fPIC -c hello_world_wrap.cxx -IC:\Ruby200-x64\include\ruby-2.0.0

我收到的错误是:

Error from Command Prompt

我所做的所有研究都指出我安装了错误的DevKit,但我不认为这是我的问题。我确保下载了64位版本的Ruby和DevKit。我已经检查了错误中指定的文件夹,并且没有 config.h 文件。我不确定为什么config.h文件不存在或为什么 ruby​​.h 试图加载它。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

检查C:\Ruby200-x64\include\ruby-2.0.0\ruby\config.h是否存在。如果没有,找到它并修复路径。

更新

检查同一文件夹中是否有ruby.h。如果有,那么只需使用-IC:\Ruby200-x64\include\ruby-2.0.0\ruby\x64-mingw。否则,尝试为此额外路径添加第二个-I。我同意你的看法,这有点奇怪(不是前者,但绝对是你必须有两个-I)。 https://groups.google.com/forum/m/#!topic/comp.lang.ruby/RpjuvXpFI30的脚本表明这可能是正常的,即I。你需要一个-I用于平台无关的头文件,一个用于平台相关的头文件。