как собрать плагины с помощью gcc из mingw?

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
Jet Bird
Posts: 3
Joined: Sat 27 Jan, 2007 14:50

Компиляция под MinGW

Post by Jet Bird » Sat 27 Jan, 2007 15:20

Подскажите, пожалуйста, как скопмилировать какой-нибудь пример, используя MinGW.

User avatar
DrKnS
Posts: 4534
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 113 times
Contact:

Post by DrKnS » Sat 27 Jan, 2007 16:05

См. %FARHOME%\PluginSDK\GCCReadme.txt и %FARHOME%\PluginSDK\Examples\

Jet Bird
Posts: 3
Joined: Sat 27 Jan, 2007 14:50

Post by Jet Bird » Sat 27 Jan, 2007 16:35

Я читал. Но вот, допустим, берем такой плагин.

[HaRT] Длинный специфичный текст перенесён в приложение. В следующий раз будет просто удалён.

.def к нему выглядит так:

Code: Select all

LIBRARY
EXPORTS
   GetPluginInfo=GetPluginInfo@4
   OpenPlugin=OpenPlugin@8
   SetStartupInfo=SetStartupInfo@4
Почему-то функция OpenPlugin не вызвается, а две другие работают. :-(
Attachments
HelloWorld_FromMinGW.7z
Программный код, вырезанный из текста сообщения
(914 Bytes) Downloaded 277 times

User avatar
DrKnS
Posts: 4534
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 113 times
Contact:

Post by DrKnS » Sat 27 Jan, 2007 16:57

Собрал, работает.
А точно там где надо смотришь? (с Info->Flags=PF_EDITOR|PF_DISABLEPANELS плагин будет доступен только из меню редактора.)

Jet Bird
Posts: 3
Joined: Sat 27 Jan, 2007 14:50

Post by Jet Bird » Sat 27 Jan, 2007 17:26

Ух ты, здорово!
В редакторе работает!
:)
Спасибо!!!

karlson
Posts: 40
Joined: Sat 03 Jun, 2006 17:31

Post by karlson » Thu 15 Feb, 2007 17:56

Иногда помогает указать FAR в объявлении функции.

User avatar
burning shadow
Posts: 39
Joined: Tue 13 May, 2008 13:55
Location: St.Petersburg, Russia
Contact:

как собрать плагины с помощью gcc из mingw?

Post by burning shadow » Fri 04 Jul, 2008 01:22

Попробовал собрать плагины, только что слитые из SVN с помощью MinGW/GCC, ругается:

Code: Select all

$ make -f makefile_all_gcc 
===========CRT library
make[1]: Entering directory `/d/prog/c/work/far/plugins/common/CRT'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/d/prog/c/work/far/plugins/common/CRT'
===========align
make[1]: Entering directory `/d/prog/c/work/far/plugins/align'
compiling Align.rc
d:\prog\c\mingw\bin\windres.exe: Align.rc:8: syntax error
make[1]: *** [final.32.gcc/obj/Align.res.o] Error 1
make[1]: Leaving directory `/d/prog/c/work/far/plugins/align'
make: *** [align] Error 2
Сам, увы, разобраться не смог..

User avatar
zg
zero-gravity
Posts: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Re: как собрать плагины с помощью gcc из mingw?

Post by zg » Fri 04 Jul, 2008 08:13

burning shadow wrote:Сам, увы, разобраться не смог..
нужен наипоследнейший binutils. там баг в windres исправили.

User avatar
burning shadow
Posts: 39
Joined: Tue 13 May, 2008 13:55
Location: St.Petersburg, Russia
Contact:

Re: как собрать плагины с помощью gcc из mingw?

Post by burning shadow » Fri 04 Jul, 2008 08:35

Опаньки. Спасибо. :)

black alpinist
Posts: 20
Joined: Fri 13 Apr, 2007 09:22

Re: как собрать плагины с помощью gcc из mingw?

Post by black alpinist » Wed 16 Jul, 2008 06:53

Может у кого-то завалялись gcc-шниые make файлы для ftp/lib? Там есть для vc, но я пока не умею переделывать :oops:

black alpinist
Posts: 20
Joined: Fri 13 Apr, 2007 09:22

Re: Компиляция под MinGW

Post by black alpinist » Thu 17 Jul, 2008 12:10

в PluginsSDK/VCReadme.txt относительно .def файлов написано
There is no need to declare your names like ClosePlugin=_ClosePlugin@4
because linker does it automatically.
Относится ли это и к gcc ?

black alpinist
Posts: 20
Joined: Fri 13 Apr, 2007 09:22

Re: Компиляция под MinGW

Post by black alpinist » Thu 17 Jul, 2008 13:00

Хе, опытным путем (подстановкой vc def файла вместо gcc) установлено что относится. По крайней мере циферки совпадают :)
Продолжим эксперимент...

User avatar
zg
zero-gravity
Posts: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Re: Компиляция под MinGW

Post by zg » Thu 17 Jul, 2008 17:41

black alpinist wrote:По крайней мере циферки совпадают :)
«циферки» как вы изволили выразится, это манглинг. и конкретно означают размер параметров функции.

black alpinist
Posts: 20
Joined: Fri 13 Apr, 2007 09:22

Re: Компиляция под MinGW

Post by black alpinist » Wed 23 Jul, 2008 09:39

Нарвался на следующую проблему - при линковке с ключом -nodefaultlibs вылазит куча месаг типа

Code: Select all

c:/mingw/bin/../lib/gcc/mingw32/4.3.0/../../../../mingw32/bin/ld.exe: warning: cannot find entry symbol _DllMain@12; defaulting to 6cbc1000
./final.32.gcc/obj/Notify/nt_Main.o:nt_Main.cpp:(.text+0x32): undefined reference to `_fclose'
./final.32.gcc/obj/Notify/nt_Main.o:nt_Main.cpp:(.text+0xa9): undefined reference to `_fopen'
./final.32.gcc/obj/Notify/nt_Main.o:nt_Main.cpp:(.text+0xc2): undefined reference to `_fopen'
./final.32.gcc/obj/Notify/nt_Main.o:nt_Main.cpp:(.text+0x14f): undefined reference to `_fprintf'
./final.32.gcc/obj/Notify/nt_Main.o:nt_Main.cpp:(.text+0x1a5): undefined reference to `_fprintf'
./final.32.gcc/obj/Notify/nt_Main.o:nt_Main.cpp:(.text+0x1b6): undefined reference to `_fflush'
Без него все нормально. Что не проинклюдилось? Вот линковочная команда:

Code: Select all

mingw32-g++ -e _DllMain@12 -o ftpNotify.fll -Xlinker --base-file -Xlinker ftpNotify.fll.base ./final.32.gcc/obj/Notify/p_All.o ./final.32.gcc/obj/Notify/nt_Main.o ./final.32.gcc/obj/Notify/ftpNotify.res.o -mno-cygwin -mdll -s -nostartfiles -nodefaultlibs -lgcc -L ../common -lCRT -luser32 -lkernel32 -ladvapi32 -lshell32 -lwsock32 -lwinmm

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Re: Компиляция под MinGW

Post by t-rex » Wed 23 Jul, 2008 10:17

black alpinist
для фунций из libc в mingw нужно линковать с msvcrt

black alpinist
Posts: 20
Joined: Fri 13 Apr, 2007 09:22

Re: Компиляция под MinGW

Post by black alpinist » Wed 23 Jul, 2008 14:27

Спасибо, помогло!
но вот это сообщение остается:

Code: Select all

c:/mingw/bin/../lib/gcc/mingw32/4.3.0/../../../../mingw32/bin/ld.exe: warning: cannot find entry symbol _DllMain@12; defaulting to 6cbc1000
Опять же, без nodefaultlibs все нормально

апдейт. нашел нужную либу - mingw32 :)

Post Reply

Return to “Разработка плагинов”

Who is online

Users browsing this forum: No registered users and 2 guests