Создание автономных исполняемых файлов Lua

Решите эту проблему, добавив эти параметры в nvcc

nvcc x.cu ...   -ccbin "D:\Program Files\Microsoft Visual Studio 11.0\VC\bin"

, например, мой компилятор - VS2012. и cl.exe находится в этом каталоге

37
задан h3rald 11 October 2008 в 19:50
поделиться

4 ответа

Выезд для srlua. Это делает то, в чем Вы нуждаетесь.

Это от одного из авторов Lua. На этом адресе существуют также предварительно скомпилированные двоичные файлы Windows, так, чтобы было бы еще легче для Вас, я думаю.

28
ответ дан Edwin Jarvis 11 October 2008 в 19:50
поделиться

Помимо вышеупомянутых предложений, можно смотреть на L-Bia .

Это может сделать автономные исполняемые файлы включая lua сценарии и необходимые динамические библиотеки.

7
ответ дан Ignacio 11 October 2008 в 19:50
поделиться

Так как Вы говорите '.exe', я предположу, что Вы ищете решение для Windows. Одна идея состоит в том, чтобы просто добавить сценарии к предварительно созданному исполняемому файлу интерпретатора. Это может или не может квалифицировать как 'легкое' в Вашей книге.

интерпретатор должен быть в состоянии считать себя, проанализировать его заголовок для определения, где регулярные .exe данные заканчиваются (т.е. где сценарий начинается), и затем вручите от остатка от файла в Lua.

Другие решения не требуют, чтобы интерпретатор, чтобы как упорно работать, но сделать потребовал более включенного соединения, тогда как с этим методом, exeifying сценарий может быть столь же простым как

copy interpreter.exe+script.lua script.exe
3
ответ дан 11 October 2008 в 19:50
поделиться

Чтобы сделать исполняемый файл из скрипта, используйте утилиту bin2c следующим образом:

luac script.lua -o script.luac
bin2c script.luac > code.c

Затем создайте в текстовом редакторе файл main.c и скомпилируйте / скомпонуйте его с вашим любимым компилятором. Вот и все. (Примечание - исполняемый файл также поддерживает аргументы командной строки)

Пример с MSVC:

cl /I "./" /I "$(LUA_DIR)\include" /D "_CRT_SECURE_NO_DEPRECATE" /D "_MBCS" /GF /FD /EHsc /MD /Gy /TC /c main.c
ld /SUBSYSTEM:CONSOLE /RELEASE /ENTRY:"mainCRTStartup" /MACHINE:X86 /MANIFEST $(LUA_DIR)\lib\lua5.1.lib main.obj /out:script.exe
mt -manifest $script.manifest -outputresource:script.exe;1

Используйте / SUBSYSTEM: WINDOWS для исполняемого файла GUI. Все это непросто только в первый раз, вы можете создать командный файл для автоматизации процесса, как только вы его успешно попробуете.

main.c:

#include <stdlib.h>
#include <stdio.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"

int main(int argc, char *argv[]) {
  int i;
  lua_State *L = luaL_newstate();
  luaL_openlibs(L);
  lua_newtable(L);
  for (i = 0; i < argc; i++) {
    lua_pushnumber(L, i);
    lua_pushstring(L, argv[i]);
    lua_rawset(L, -3);
  }
  lua_setglobal(L, "arg");
#include "code.c"
  lua_close(L);
  return 0;
}
9
ответ дан 27 November 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: