2010-06-28 2 views
0

Я построил (очень простую) библиотеку, которую я могу назвать просто отлично от другой программы на C++.Ruby FFI on MinGW

Но это не сработает, когда я попытаюсь связать его с Ruby FFI. Он дает FFI::NotFoundError, говорит, что он не может найти функцию, экспортированную в DLL.

Куда могут пойти вещи? Нужно ли мне специальное лечение при компиляции моей DLL с помощью g ++? Я просто строю его с g++ -shared -o lib.dll libsrc.cpp.

Я довольно новичок в Ruby, но пример кода для FFI очень прост, и у меня также есть код, который выполняет некоторые довольно сложные вещи из библиотеки user32 через FFI. Поэтому я знаю, что это работает.

Еще одна вещь, которую я могу придумать, заключается в компиляции моего кода с помощью visual studio в надежде создать более «совместимую» DLL, но я хочу придерживаться GCC.

ответ

0

http://github.com/remogatto/ffi-inliner может помочь.

Обратите внимание, что вам нужно убедиться, что вы вызываете свои методы как stdcall, если они определены таким образом.

http://groups.google.com/group/ruby-ffi/browse_thread/thread/e2df39cdfe96a3c7?fwc=1

Вы также можете опубликовать вашу проблему в Google группе рубин FFI.

+0

Я не могу заставить его работать. Будет просто сделать регулярное расширение Ruby. Благодарю. –

Смежные вопросы