Victor_VG
Tracker Mod | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору b4811 - не собирается т.к. падает c2.dll в линкере. Посмотрю что будет после полного удаления рабочей копии ибо на данный момент в логе вижу: .\dev\far3\1\fardev\unicode_far\plugapi.cpp(2082): warning C4702: недостижимый код .\dev\far3\1\fardev\unicode_far\plugapi.cpp(2069): warning C4702: недостижимый код ........... .\dev\far3\1\fardev\unicode_far\plugina.cpp(1744): warning C4702: недостижимый код .\dev\far3\1\fardev\unicode_far\plugina.cpp(1812): warning C4702: недостижимый код c:\program files (x86)\microsoft visual studio 14.0\vc\include\type_traits(1363): fatal error C1001: Внутренняя ошибка в файле компилятора. (файл компилятора "f:\dd\vctools\compiler\utc\src\p2\main.c", строка 255) Чтобы обойти эту неполадку, попытайтесь упростить или изменить программу в строках около указанной позиции. Для получения дополнительных сведений выберите команду "Техническая поддержка" в меню "Справка" Visual C++ или откройте файл справки технической поддержки. .\dev\far3\1\fardev\unicode_far\plugina.cpp(1858): warning C4702: недостижимый код .\dev\far3\1\fardev\unicode_far\plugina.cpp(1891): warning C4702: недостижимый код .\dev\far3\1\fardev\unicode_far\plugina.cpp(1945): warning C4702: недостижимый код .\dev\far3\1\fardev\unicode_far\plugina.cpp(1930): warning C4702: недостижимый код .................. cl : командная строка error D8040: ошибка при создании или взаимодействии с дочерним процессом и какую разрядность собирать не важно - ошибки те же. Добавлено: Исходники получены заново, отключено только создание отладочной информации а остальные настройки проекта с SVN. Сборка х86 - при линковке получаем крах link.exe (v14.0.24215.1) из-за AV в c2.dll (v19.0.24215.1, код исключения 0xc0000005), ОС v6.1.7601.2.1.0.256.1 с логом студии: Цитата: 1> vc_crt_fix_impl.cpp 1> Создание кода 1> 1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\type_traits(1363): fatal error C1001: Внутренняя ошибка в файле компилятора. 1> (файл компилятора "f:\dd\vctools\compiler\utc\src\p2\main.c", строка 255) 1> Чтобы обойти эту неполадку, попытайтесь упростить или изменить программу в строках около указанной позиции. 1> Для получения дополнительных сведений выберите команду "Техническая поддержка" 1> в меню "Справка" Visual C++ или откройте файл справки технической поддержки. ========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== | и завершением сборки. Похоже ей рефакторинг поперёк горла костью встал. Добавлено: Отключил для этапа компиляции /GL, всё равно сбой: Цитата: 1>.\dev\far3\12\fardev\unicode_far\plugina.cpp(1744): warning C4702: недостижимый код 1>.\dev\far3\12\fardev\unicode_far\plugina.cpp(1812): warning C4702: недостижимый код 1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\type_traits(1363): fatal error C1001: Внутренняя ошибка в файле компилятора. 1> (файл компилятора "f:\dd\vctools\compiler\utc\src\p2\main.c", строка 255) 1> Чтобы обойти эту неполадку, попытайтесь упростить или изменить программу в строках около указанной позиции. 1> Для получения дополнительных сведений выберите команду "Техническая поддержка" 1> в меню "Справка" Visual C++ или откройте файл справки технической поддержки. 1> 1> treelist.cpp 1>.\dev\far3\12\fardev\unicode_far\plugina.cpp(1858): warning C4702: недостижимый код 1>.\dev\far3\12\fardev\unicode_far\plugina.cpp(1891): warning C4702: недостижимый код 1>.\dev\far3\12\fardev\unicode_far\plugina.cpp(1945): warning C4702: недостижимый код 1>.\dev\far3\12\fardev\unicode_far\plugina.cpp(1930): warning C4702: недостижимый код .......... 1>cl : командная строка error D8040: ошибка при создании или взаимодействии с дочерним процессом ========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== | буду пробовать откат до r14534... Добавлено: Откатил рабочую копию до r14534 и если считать что сообщения компилятора правильно указывали на место сбоя, то смотрим диффы: Код: --- plugapi.cpp rev14534 +++ plugapi.cpp rev14535 @@ -1959,7 +1959,7 @@ if (Id == -1) { const auto CurrentObject = std::invoke(Getter, Global->WindowManager); - return CurrentObject ? (CurrentObject->*Control)(Command, Param1, Param2) : 0; + return CurrentObject? std::invoke(Control, CurrentObject, Command, Param1, Param2) : 0; } else { @@ -1970,7 +1970,7 @@ { if (const auto CurrentControlWindow = CurrentWindow->GetById(Id)) { - return (CurrentControlWindow->*Control)(Command, Param1, Param2); + return std::invoke(Control, CurrentControlWindow, Command, Param1, Param2); } } } | и Код: --- PluginA.cpp rev14534 +++ PluginA.cpp rev14535 @@ -632,7 +632,7 @@ for (size_t i = 0; i != 12; ++i) { - const auto& CheckLabel = [&](const auto& Item) { return (kbtA->*Item.first)[i] != nullptr; }; + const auto& CheckLabel = [&](const auto& Item) { return std::invoke(Item.first, kbtA)[i] != nullptr; }; kbtW->CountLabels += std::count_if(ALL_CONST_RANGE(LabelsMap), CheckLabel); @@ -650,9 +650,9 @@ { const auto& ProcessLabel = [&](const auto& Item) { - if ((kbtA->*Item.first)[i]) + if (const auto& Text = std::invoke(Item.first, kbtA)[i]) { - WideLabels[j].Text = AnsiToUnicode((kbtA->*Item.first)[i]); + WideLabels[j].Text = AnsiToUnicode(Text); WideLabels[j].LongText = nullptr; WideLabels[j].Key.VirtualKeyCode = static_cast<WORD>(VK_F1 + i); WideLabels[j].Key.ControlKeyState = Item.second; | может у компилятора на std::invoke возникает сбой? Добавлено: После небольшой возни с бэкапами чтобы не портить рабочую копию b4810 r14534 собрался без ошибок. Единственные вольности что я себе позволил при сборке это включение оптимизации /Ox /Os на этапе компиляции при сборке и отключение оптимизации для отладки, а попросту генерации отладочной инфы, и плюс обновление 7z.dll и *.sfx до версии 16.04 чтобы позже не забыть. Так всё собирается без ошибок.
---------- Жив курилка! (Р. Ролан, "Кола Брюньон") Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti |
|