我正在尝试使用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
我收到的错误是:
我所做的所有研究都指出我安装了错误的DevKit,但我不认为这是我的问题。我确保下载了64位版本的Ruby和DevKit。我已经检查了错误中指定的文件夹,并且没有 config.h 文件。我不确定为什么config.h文件不存在或为什么 ruby.h 试图加载它。
有什么想法吗?
答案 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用于平台无关的头文件,一个用于平台相关的头文件。