C++ в Visual Studio 2008
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
Total Commander -> Написание плагинов для Total Commander

#1: C++ в Visual Studio 2008 Author: VSBLocation: Новгород PostPosted: Mon Jul 12, 2010 02:23
    —
Хочу написать WCX плагин на с++, IDE - MS VS 2008
Проблема: функции из плагина не вызываются вообще, даже GetPackerCaps()

Вот ткма на англ форуме
http://www.ghisler.ch/board/viewtopic.php?t=26840
Что делать?

#2:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Jul 12, 2010 07:28
    —
Я скачал твои исходники, посмотрю, вчера не успел просто.


Короче, насколько я понял, при попытке тотала вызывать GetPackerCaps возникает какая-то ошибка, и он выгружает плагин, а в packer caps ставит 0. Осталось разобраться, почему. Я уже и переключать в Multi-Threaded Debug пробовал, все равно.

Кстати, GetPackerCaps тотал вызывает не при установке плагина, а при открытии диалога упаковки файлов.

#3:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Jul 12, 2010 09:25
    —
Ага, у тебя в .def-файле не хватало CloseArchive. Как только я добавил ее, сразу все заработало.

#4:  Author: VSBLocation: Новгород PostPosted: Mon Jul 12, 2010 10:56
    —
Точно, спасибо!

Отписался подробнее в той теме

#5:  Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Mon Jul 12, 2010 12:25
    —
Список обязательный функций перечислен в writer's reference. Я тоже на чём-то подобном споткнулся, когда начинал писать:
http://www.motorocker.ru/wcx_writers_reference.htm
http://www.motorocker.ru/wcx.dpr.htm

Они должны быть обязательно, даже если не используются.

#6:  Author: VSBLocation: Новгород PostPosted: Mon Jul 12, 2010 12:47
    —
Всё равно не работает.
Может надо как то по особому экспортировать?

#7:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Jul 12, 2010 13:08
    —
VSB wrote:
Всё равно не работает.
Может надо как то по особому экспортировать?

Я в теме на оффоруме написал, что у тебя еще не хватает функции ReadHeader.

#8:  Author: VSBLocation: Новгород PostPosted: Mon Jul 12, 2010 13:17
    —
MVV

Кстати, в гайде ошибка по поводу ReadHeaderEx

Quote:
The following functions of the packer plugin interface support Unicode:

OpenArchiveW
ReadHeaderExW
ProcessFileW
SetChangeVolProcW
SetProcessDataProcW
PackFilesW
DeleteFilesW
StartMemPackW
CanYouHandleThisFileW

The following functions do not exist in a Unicode form and must be implemented as Ansi:

ReadHeader - use ReadHeaderEx
CloseArchive
GetPackerCaps
ConfigurePacker
PackToMem
DoneMemPack
PackSetDefaultParams
ReadHeaderEx

#9:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Jul 12, 2010 13:19
    —
Да, действительно, недочетик. Отписался на оффоруме в теме про описания интерфейсов.

#10:  Author: VSBLocation: Новгород PostPosted: Mon Jul 12, 2010 13:23
    —
Кстати, почему обязателен экспорт через EXPORTS и никак через __declspec(dllexport) в декорированом виде?

#11:  Author: VSBLocation: Новгород PostPosted: Mon Jul 12, 2010 13:25
    —
И еще, хотелось бы в гайде видеть также порядок вызовов функций для разных сценариев

#12:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Jul 12, 2010 14:50
    —
VSB wrote:
Кстати, почему обязателен экспорт через EXPORTS и никак через __declspec(dllexport) в декорированом виде?

Во-первых, у разных компиляторов декорирование различно - причем, оно может быть различным даже для разных версий одного компилятора - ГОСТа на декорирование не существует. Smile
Во-вторых, неважно, какое имя, лишь бы оно было одинаковым для всех плагинов, чтобы можно было легко и быстро получить адрес функции, используя GetProcAddress.
В-третьих, куда приятнее видеть в списке экспортируемых функций читабельные имена, а не кракозябры.
В-четвертых, уже не один десяток лет такая схема используется в ТК.
А экспортировать вроде можно не только через .def-файл (была кажется и какая-то директива для экспорта функции с недекорированным именем).

VSB wrote:
И еще, хотелось бы в гайде видеть также порядок вызовов функций для разных сценариев

Что видеть в гайде - лучше пиши сразу Гислеру здесь. А вообще, есть же примеры плагинов с открытыми исходниками. Было бы желание разобраться в них.

#13:  Author: VSBLocation: Новгород PostPosted: Mon Jul 12, 2010 16:14
    —
Причем тут пример?
просто для отладки полезно знать в каком порядке TC будет вызывать функции

#14:  Author: VSBLocation: Новгород PostPosted: Mon Jul 12, 2010 20:01
    —
А есть ли для VC++ замена этого
http://docwiki.embarcadero.com/RADStudio/en/Path_Manipulation_Routines

#15:  Author: VSBLocation: Новгород PostPosted: Tue Jul 13, 2010 02:17
    —



Total Commander -> Написание плагинов для Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group