Я создал (очень простую) библиотеку, которую я могу назвать просто отлично из другой программы на C ++.
Но это не сработает, когда я пытаюсь заставить Ruby FFI связать его.Он дает FFI::NotFoundError
, говорит, что не может найти функцию, экспортированную в DLL.
Где все могло пойти не так?Нужна ли особая обработка при компиляции моей DLL с использованием g ++?Я просто собираю его с g++ -shared -o lib.dll libsrc.cpp
.
Я довольно новичок в Ruby, но пример кода для FFI очень прост, и у меня также есть код, который делает довольно сложные вещи из DLL user32 через FFI.Так что я знаю, что это работает.
Еще одна вещь, о которой я могу подумать, это попытаться скомпилировать мой код с использованием visual studio в надежде создать более «совместимую» DLL, но я хочу придерживаться GCC.