Мне нужно собрать этот модуль Lua и использовать его в другом приложении, в котором уже есть ядро Lua. Модуль будет загружен через 'require'.
Я использую MinGW x64 на Windows 10. Я успешно собрал с ним Lua 5.2, извлек файл lua.dll
и переименовал его в liblua.dll.a
.
Затем я собрал модуль, используя следующий Makefile:
CC = x86_64-w64-mingw32-gcc
LUA_INCDIR=$(STAGING_DIR)/usr/include
utf8.dll: lutf8lib.o
$(CC) -m64 -O -shared -fpic lutf8lib.c -o utf8.dll -llua
lutf8lib.o: lutf8lib.c
$(CC) -O2 -fpic -c -DLUA_BUILD_AS_DLL lutf8lib.c -I$(LUA_INCDIR)
Проблема в размере файла, его размер составляет 420 КБ, и он определенно включает ядро Lua (я получил ошибку «несколько виртуальных машин»). Мне нужно собрать модуль без включения ядра.
Ранее я установил обычный MinGW (x86) и использовал следующий Makefile:
CC = gcc
LUA_INCDIR=$(STAGING_DIR)/usr/include
utf8.dll: lutf8lib.o
$(CC) -m32 -shared lutf8lib.c -o utf8.dll -llua
lutf8lib.o: lutf8lib.c
$(CC) -fPIC -c lutf8lib.c -I$(LUA_INCDIR)
И получил файл 97 КБ без ядра Lua. К сожалению, мне конкретно нужен файл x64.
UPD: я пытался собрать тот же модуль, используя MSVC, но, похоже, IDE меняет luaopen_utf8
имя функции. Если я добавлю это, чтобы исправить это:
int __declspec(dllexport)
IDE будет включать ядро Lua VM в файл DLL. Опять же.