Я пытаюсь получить базовый пример с использованием SWIG для преобразования файла C++ в Ruby. У меня установлен Ruby 2.0.0p451 (64-разрядная версия), и я также установил 64-разрядный DevKit. Я запускаю Windows 7 и пытаюсь использовать swigwin-2.0.12. Наконец, я использую компилятор GCC C++, поставляемый Mingw-builds для 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 пытается его загрузить.
Есть предположения?
Убедитесь, что существует 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 независимых заголовков и один для платформы.