Page 3 of 7

Posted: Wed Dec 29, 2010 8:59 pm
by FeyFre
Поконкретнее - какая ошибка?
R6034(не смог правильно инициализировать CRT)
Причину ошибки выяснил: возникает при попытке подгрузить плагин(либо при автозагрузке, либо при перечислении в окне плагинов. Хотя в при автозагрузке у меня не всегда выскакивает), у которого есть манифест. Но Акел не падает, работает дальше.
Плагин с манифестом с CRT не линкуется вообще, только с user32 и kernel32(манифест туда попал случайно, вероятнее всего при добавления 64-битной платформы студия сделала лишнее).
(Вынужден линковать Акел с libcmt.lib на 32-битной платформе ибо с какого-то перепугу AkelEdit.obj требует @__security_check_cookie@4)

Posted: Thu Dec 30, 2010 9:06 am
by Instructor

Posted: Thu Dec 30, 2010 1:28 pm
by FeyFre
Instructor
Точно! А ведь сам когда-то допер до такого решения...

Posted: Tue Jan 04, 2011 11:46 am
by ABTOP
Где взять plugin XBrackets для версии x64?

Posted: Tue Jan 04, 2011 12:28 pm
by se7h
ABTOP
автор плагина (DV) видимо ещё не выпустил х64 версии

Posted: Tue Jan 04, 2011 12:29 pm
by FeyFre
ABTOP
Тут, и только тут http://sourceforge.net/projects/akelpad ... e/download

Posted: Tue Jan 04, 2011 1:04 pm
by ABTOP
FeyFre
Нету его там :(

Posted: Fri Jan 14, 2011 9:21 am
by DV
У меня неумный вопрос... Открыл проект QSearch8x, добавил новую платформу x64 (настройки наследованы от Win32), и при попытке собрать Release x64 выдаёт вот что:
1>DialogSwitcher.obj : error LNK2001: unresolved external symbol __imp_SendMessageW
1>DialogSwitcher.obj : error LNK2001: unresolved external symbol __imp_ShowCaret
...
1>QSearch.obj : error LNK2001: unresolved external symbol __imp_RegQueryValueExW
1>QSearch.obj : error LNK2001: unresolved external symbol __imp_wsprintfA
...
1>QSearchDlg.obj : error LNK2001: unresolved external symbol __imp_GetWindowLongA
1>QSearchDlg.obj : error LNK2001: unresolved external symbol __imp_CreateWindowExW
...
Это что за нафиг?

Posted: Fri Jan 14, 2011 10:54 am
by FeyFre
DV
Не хватает либ для линковки.

Code: Select all

1>DialogSwitcher.obj : error LNK2001: unresolved external symbol __imp_SendMessageW 
1>DialogSwitcher.obj : error LNK2001: unresolved external symbol __imp_ShowCaret 
... 
1>QSearch.obj : error LNK2001: unresolved external symbol __imp_wsprintfA 
... 
1>QSearchDlg.obj : error LNK2001: unresolved external symbol __imp_GetWindowLongA 
1>QSearchDlg.obj : error LNK2001: unresolved external symbol __imp_CreateWindowExW
user32.lib

Code: Select all

1>QSearch.obj : error LNK2001: unresolved external symbol __imp_RegQueryValueExW 
advapi32.lib

Я так предполагаю, студия настройки дополнительных либ при переходе через платформу копировать не пожелала(на всякий случай. Я бы тоже не пожелал бы). Я точно не вспомню, было ли у меня такое, или нет.(Только у меня версия студии 9.0, и поведение может быть разным)
PS: не забудьте что для сабклассинга на x64 нужно использовать Get/SetWindowLongPtr

Posted: Fri Jan 14, 2011 4:03 pm
by Instructor
DV
Возможно папка Lib в путях VS указана для x86.

Posted: Fri Jan 14, 2011 6:44 pm
by DV
Instructor wrote:И свой memset вместо "={0};" сделать.
Насчёт этого поподробнее, пожалуйста :)
Разве что-то не так с этим кодом:

Code: Select all

wchar_t g_szFunctionQSearchW[128] = { 0 };
или с этим:

Code: Select all

DOCK dk = { 0 };
?
Компилятор, вроде, не возражает.

Posted: Fri Jan 14, 2011 7:48 pm
by Instructor
Возможно какой-либо флаг стоит на использование VCRedist (внешняя зависимость).
Компилятор, вроде, не возражает.
Компилятор в случае например:

Code: Select all

DOCK dk = { 0 };
оптимизирует это в memcpy вызов, что при /NODEFAULTLIB вызывает ошибку

Code: Select all

error LNK2019: unresolved external symbol memset referenced in function CreateDock
Также и например

Code: Select all

AECHARRANGE cr1;
AECHARRANGE cr2;
...
cr1=cr2;
Заменяется на memcpy.

Выход использовать свои memcpy и memset (код можно взять из StrFunc.h v4.4).

Posted: Fri Jan 14, 2011 8:10 pm
by DV
Instructor wrote:Выход использовать свои memcpy и memset (код можно взять из StrFunc.h v4.4).
Кстати, насчёт этого. То, что я хочу предложить далее, не относится к архитектуре x64, а относится к архитектуре AkelPad и всех его плагинов. По моим наблюдениям, практически все плагины так или иначе используют некоторые стандартные функции из набора StrFunc.h, StackFunc.h и, возможно, WideFunc.h.
Предложение: почему бы не вынести эти функции в отдельный вспомогательный .dll файл? Типа сделать что-то наподобие AkelPad-CRT. Это сразу "облегчило" бы все плагины, которые используют данные функции.

Posted: Sat Feb 26, 2011 3:49 pm
by VladSh
Ставил x64-версию на Win7, следующие наблюдения:
1. Нет отдельно скачиваемого Plugs-пака - плохо.
2. Плаги только с английским интерфейсом - плохо.
3. Устанавливал Akel как обычную прогу (первый пункт при установке); запускаю обычный блокнот Windows, в верхней строке пишет "AkelPad - Блокнот", хотя если посмотреть "О программе", то показывает, что это виндовый notepad.exe... - странно всё это.
4. Ни один из плагов FeyFre не заработал, при вызове пишет "dll соотв. плагина по такому-то пути не может быть открыт", или что-то типа того, хотя все dll там есть (правильные пути).
Не знаю, связано ли с этим, но почему-то на папке с AkelPad'ом установлен замочек, хотя доступ на запись в папку и все вложенные папки/файлы под текущим пользователем имеется.

Posted: Sat Feb 26, 2011 5:11 pm
by Instructor
VladSh
2. Выберите "Вид->Язык->Русский" и плагины будут на русском.
3. Чудеса "AkelPad" вместо "Безымянный" :)
4. Когда делал релиз забыл, что у FeyFre dll для x64 в папке Plugsx64. Попробую автоматизировать, чтобы исключить такую ситуацию. AkelPad-4.5.5-x64-setup.exe перезалил.