Модуль Lua - как не включить ядро ​​Lua? - PullRequest
0 голосов
/ 03 июля 2018

Мне нужно собрать этот модуль 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. Опять же.

...