В общем суть такова, есть некий исходный код библиотеки написанной под линуксом.
После сборки под виндой с помощью mingw получаем якобы готовый модуль для использования в среде lua.
Но, lua этот модуль как dll не понимает.
Команда сборки объектного файла из исходников.
$ gcc -c *.c -I../include -I../klib -I../uthash -I../src -I./luah
Команда сборки исполняемого файла
$ gcc -shared -o ucl.dll lua_ucl.o -L. -llua51 -lucl
В итоге получаем на выходе файл ucl.dll. Вот вроде бы и готово, но в чем проблема?
А вот в чем, при подгрузки этой библиотеки как модуля для lua, а именно при вызове LoadLibrary возникает ошибка будто бы модуль не найден. Но ошибка заключается не в том что require не может найти модуль физически, а в том что ucl.dll как dynamic link library не определяется! Подскажите знающие люди, каким образом можно заставить LoadLibrary понимать ucl.dll как библиотеку?
Сам проект взят отсюдого
https://github.com/vstakhov/libucl/
Для сравнения два скриншота заголовочников файла
1. ucl.dll
2. utf8.dll (рабочая, полностью определяется и можно пользоваться)
Видим что для первого варианта Dll Characteristics не определена или занулена, а так же для второго варианта подсистема определена как Win32 Gui за вместо Win32 Console. Следовательно напрашивается вывод, gcc собирает программу не как dll а как приложение, поэтому LoadLibrary это приложение загрузить не может. Есть ли какое либо решение данной проблемы? Возможно нужно неизвестные для меня флаги указать при сборке приложения через gcc, либо пропатчить выходной файл чтобы он определялся как dll библиотека, но я пока не знаю как это сделать.