DLL для LUA плагина

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel » Wed 04 Mar, 2015 10:03

Latest post of the previous page:

В последние год-два собираю плагины с помощью:
gcc.EXE (tdm-1) 4.7.1 -- для x86
gcc.EXE (tdm64-1) 4.7.1 -- для x64
Для обоих вариантов - sjlj. О каких-либо проблемах с этим мне пока не известно.

User avatar
John Doe
Бюрократ
Posts: 11264
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 84 times

DLL для LUA плагина [SOLVED]

Post by John Doe » Fri 10 Apr, 2015 23:28

Не получается собрать luaplug:

Code: Select all

g++    -c -o luaplug.o D:\Development\farmanager\unicode_far\..\plugins\luamacro\luafar/luaplug.c
In file included from D:\Development\farmanager\unicode_far\..\plugins\luamacro\luafar/luaplug.c:4:0:
D:\Development\farmanager\unicode_far\..\plugins\luamacro\luafar/luafar.h:4:22: fatal error: plugin.hpp: No such file or directory
 #include <plugin.hpp>
                      ^
compilation terminated.
<builtin>: recipe for target 'luaplug.o' failed
mingw32-make.exe: *** [luaplug.o] Error 1
Файл естественно на месте, как и всё остальное из svn.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

DLL для LUA плагина [SOLVED]

Post by Shmuel » Sat 11 Apr, 2015 00:06

Обычно мейк-файлы работают из определённой директории, поскольку содержат внутри относительные пути.
Если зайти в plugins\luamacro\luafar и запустить luaplug.mak оттуда, то собирается.
(luaplug.mak может использоваться и из других директорий, с некоторым "обрамлением").

User avatar
John Doe
Бюрократ
Posts: 11264
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 84 times

DLL для LUA плагина [SOLVED]

Post by John Doe » Sat 11 Apr, 2015 08:26

Shmuel wrote: Если зайти в plugins\luamacro\luafar и запустить luaplug.mak оттуда, то собирается.
К сожалению нет, ведь запускаю именно оттуда.
В чём может быть причина?

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

DLL для LUA плагина

Post by Shmuel » Sat 11 Apr, 2015 08:56

1.Соберите Фар.
2. Из папки unicode_far запустите update_headers.bat.
3.В папке Release.32.vc должны лежать lua51.dll и luafar3.dll (кладутся автоматически при сборке LuaMacro). Если вы пользуетесь GCC, сделайте необходимые правки в мейкфайле или командной строке его запуска.

User avatar
John Doe
Бюрократ
Posts: 11264
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 84 times

DLL для LUA плагина

Post by John Doe » Sat 11 Apr, 2015 09:16

Shmuel wrote: 1.Соберите Фар.
2. Из папки unicode_far запустите update_headers.bat.
3.В папке Release.32.vc должны лежать lua51.dll и luafar3.dll (кладутся автоматически при сборке LuaMacro).
Результат прежний (пытался собрать с помощью http://sourceforge.net/projects/mingw-w ... z/download).

Скачал http://tdm-gcc.tdragon.net/download, с ним такой проблемы нет, luaplug.o компилируется успешно.
Но далее наблюдаю в точности такую ошибку: viewtopic.php?p=122647#p122647
Shmuel wrote: Если вы пользуетесь GCC, сделайте необходимые правки в мейкфайле или командной строке его запуска.
Какие правки необходимы?

Update: разобрался: vc исправить на gcc в строке PATH_LIBS = $(FARDIR)\Release.$(DIRBIT).vc
Или задать PATH_LIBS в командной строке.

P.S.
Но всё ещё интересно как zg собирает с помощью mingw-w64

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

DLL для LUA плагина

Post by Shmuel » Sat 11 Apr, 2015 10:01

John Doe wrote: Результат прежний (пытался собрать с помощью http://sourceforge.net/projects/mingw-w ... z/download).
Данная проблема (попробовал, да, имеет место с пакетом mingw-builds, не знал раньше об этом) и её возможные решения описаны здесь.

User avatar
John Doe
Бюрократ
Posts: 11264
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 84 times

DLL для LUA плагина

Post by John Doe » Sat 11 Apr, 2015 10:17

Shmuel wrote: её возможные решения описаны здесь.
Вижу там два варианта решения:
A more appropriate solution is to provide your own rule ... either an explicit rule, or a pattern rule, to direct mingw32-make to use $(CC) for compiling *.c (and *.C) files, so that the built-in default rules will not apply.
MinGW developers don't really like mingw32-make; we advocate the use of MinGW.org's complementary MSYS platform tools, and the make which they include, as a better alternative.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

DLL для LUA плагина

Post by Shmuel » Sat 11 Apr, 2015 10:23

Закоммитил изменённый мейк-файл только что.

User avatar
John Doe
Бюрократ
Posts: 11264
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 84 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe » Tue 14 Apr, 2015 07:53

Shmuel wrote:В последние год-два собираю плагины с помощью:
gcc.EXE (tdm-1) 4.7.1 -- для x86
gcc.EXE (tdm64-1) 4.7.1 -- для x64
Для обоих вариантов - sjlj. О каких-либо проблемах с этим мне пока не известно.
Сейчас tdm64 может собирать плагины и для x86, и для x64 (аналогично и MinGW-w64).

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

DLL для LUA плагина

Post by Shmuel » Tue 14 Apr, 2015 14:15

John Doe wrote: Сейчас tdm64 может собирать плагины и для x86, и для x64 (аналогично и MinGW-w64).
Так было и раньше (во всяком случае, для TDM64 GCC 7.1 это так). Но "простой" TDM делает по умолчанию длл-ку = 10.5 KB, а TDM64 = 35.5 KB (для x86). Не стал разбираться, в чём дело, просто для x86 продолжаю собирать "простым" TDM.

User avatar
John Doe
Бюрократ
Posts: 11264
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 84 times

DLL для LUA плагина

Post by John Doe » Tue 14 Apr, 2015 19:46

Проверил с актуальными версиями, собрав 3 варианта luamacro.dll x86
13326 tdm-gcc
15360 tdm64-gcc
16384 mingw-w64

Действительно есть некоторая разница, причём 10.5 никакой из вариантов уже не даёт.

User avatar
John Doe
Бюрократ
Posts: 11264
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 84 times

DLL для LUA плагина

Post by John Doe » Fri 04 Sep, 2015 23:37

make -f luaplug.mak приводит к такой ошибке:

Code: Select all

gcc -O2 -Wall -I..\..\..\..\plugins\common\unicode -I..\..\..\..\plugins\luamacro\luafar\..\luasdk\include  -m32  -c luaplug.c -o luaplug.o
In file included from luaplug.c:4:0:
luafar.h:4:22: fatal error: plugin.hpp: No such file or directory
compilation terminated.
luaplug.mak:42: recipe for target 'luaplug.o' failed
mingw32-make.exe: *** [luaplug.o] Error 1
Файл plugin.hpp в папке unicode есть, в чём проблема понять не могу...

User avatar
John Doe
Бюрократ
Posts: 11264
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 84 times

DLL для LUA плагина

Post by John Doe » Fri 04 Sep, 2015 23:58

Вот тут определённо ошибка:

Code: Select all

ifndef FARDIR
  FARDIR = ..\..\..\..
endif
Лишний \.., видимо забыли исправить.
(после каких-то изменений в luaplug.mak под FARDIR понимается уже другая папка: trunk, a не trunk/unicode_far как раньше)

И приведённый в пример makefile соответственно тоже нуждается в правке.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

DLL для LUA плагина

Post by Shmuel » Sat 05 Sep, 2015 14:02

John Doe wrote: Вот тут определённо ошибка:
Да, это ошибка. Она у меня не проявляется ни в одном плагине, т.к. каждый плагин сам определяет переменную FARDIR (как абсолютный путь). Тем не менее, спасибо, исправлю.
John Doe wrote: И приведённый в пример makefile соответственно тоже нуждается в правке.
На момент написания всё было правильно, сломалось в результате модификации через полгода. Полагаю, что подобных сообщений (и не только моих), которые содержат неработающий на данный момент код, полно в форуме.

Тем не менее, если считаете нужным, можете добавить примечание (только не правьте оригинальный текст).

User avatar
John Doe
Бюрократ
Posts: 11264
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 84 times

DLL для LUA плагина

Post by John Doe » Sat 05 Sep, 2015 14:11

Shmuel wrote: подобных сообщений [...], которые содержат неработающий на данный момент код, полно в форуме
Ну свои я например правлю, или добавляю ссылки на рабочий код...

И ещё такой вопрос. В luaplug.mak по умолчанию библиотеки ищутся тут: PATH_LIBS = $(FARDIR)\unicode_far\Release.$(DIRBIT).vc
Интересно почему такое умолчание?
И как можно усовершенствовать luaplug.mak, чтобы учитывался и вариант сборки gcc?

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

DLL для LUA плагина

Post by Shmuel » Sat 05 Sep, 2015 14:36

John Doe wrote: Ну свои я например правлю, или добавляю ссылки на рабочий код...
Я себе такой задачи не ставлю. Если после сообщения прошёл день-два, я о нём благополучно забываю.
John Doe wrote: Интересно почему такое умолчание?
Потому что оно удобно лично мне. (Не забывайте, что luaplug.mak приведен только как пример, и в билде luamacro.dll он не участвует).
John Doe wrote: И как можно усовершенствовать luaplug.mak, чтобы учитывался и вариант сборки gcc?
Определяйте в своём мейк-файле PATH_LIBS = $(FARDIR)\unicode_far\Release.$(DIRBIT).gcc выше строчки включения luaplug.mak

Post Reply

Return to “Нужна помощь”