IUP для Lua перестал работать в Windows XP

Я получаю следующую ошибку от require "iuplua"

lua: budgelua5.lua:3: module 'iuplua' not found:
    no field package.preload['iuplua']
    no file 'z:\Program Files\Lua\5.1\lua\iuplua.lua'
    no file 'z:\Program Files\Lua\5.1\lua\iuplua.luac'
    no file 'z:\Program Files\Lua\5.1\lib\iuplua.lua'
    no file 'iuplua.lua'
    no file '.\iuplua.lua'
    no file 'z:\Program Files\Lua\5.1\lua\iuplua.lua'
    no file 'z:\Program Files\Lua\5.1\lua\iuplua\init.lua'
    no file 'z:\Program Files\Lua\5.1\iuplua.lua'
    no file 'z:\Program Files\Lua\5.1\iuplua\init.lua'
    no file 'z:\Program Files\Lua\5.1\lua\iuplua.luac'
    no file 'z:\Program Files\Lua\5.1\lua\iuplua\iuplua.lua'
    no file 'z:\Program Files\Lua\5.1\clibs\iuplua.dll'
    no file 'iuplua.dll'
    no file '.\libiuplua51.dll'
stack traceback:
    [C]: in function 'require'
    budgelua5.lua:3: in main chunk
    [C]: ?
>Exit code: 1

Почти уверен, что это проблема пути, но я не знаю, как это исправить.


person SWilliamson    schedule 09.01.2012    source источник


Ответы (1)


Проблема в том, что iuplua на самом деле зовут iuplua51. package.cpath по умолчанию обычно редактируется в сборках Lua для Windows, чтобы включить шаблоны, которые включают ?51 в них, чтобы подобрать библиотеки DLL с номерами версий Lua, а также обычным путем. Например, моя текущая установка Lua для Windows имеет следующее:

P:\Data\PhotoArchive>lua
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> print(package.cpath)
.\?.dll;.\?51.dll;C:\Program Files\Lua\5.1\?.dll;C:\Program Files\Lua\5.1\?51.dl
l;C:\Program Files\Lua\5.1\clibs\?.dll;C:\Program Files\Lua\5.1\clibs\?51.dll;C:
\Program Files\Lua\5.1\loadall.dll;C:\Program Files\Lua\5.1\clibs\loadall.dll
>

Обратите внимание, что то же самое обычно не делается для package.path, так как модули, написанные на Lua, обычно не имеют такой сильной зависимости от версии ядра Lua, а если и имеют, то они могут гораздо проще решать проблемы во время выполнения, чем модули. написано на языке Си.

Также обратите внимание, что IUP еще не доступен для работы с новым выпуском Lua 5.2. Команда работала над этим и, судя по недавним выпускам CD и IM, которые теперь совместимы с 5.2, скорее всего, портируют его «в ближайшее время».

person RBerteig    schedule 10.01.2012
comment
Я изменил свой путь, чтобы он был похож на ваш, что исправило «требовать iuplua», но у меня все еще были проблемы с «требованием iupcontrols». Однако благодаря вашему объяснению того, как и почему библиотеки dll версионируются, я смог это исправить! - person SWilliamson; 10.01.2012