Форум Кладовочки АЛьФ`а

Обсуждение проектов => Дружественные проекты => Тема начата: Djelf от 15 апреля 2024, 14:58

Название: Реанимация сборки 1С++
Отправлено: Djelf от 15 апреля 2024, 14:58
Нужна помощь зала!

Может, кто-то из заглянувших на этот форум, еще имеет билд-машину?

Исходная тема тут: https://www.1cpp.ru/forum/YaBB.pl?num=1204706900

Что пока выяснено:
Судя по ошибкам VC, на VC2005 и VC2008, icpp (3я версия 1с++) ее перестали собирать и проверять с ~2010г.

Следовательно все сборки с 2010 были на ICL, который подобные ошибки игнорирует.
Но на ICL 9-10 icpp собирается, но не линкуется.
Если заставить линковаться (игнорировать дубли) то вылетает при загрузке.

Ошибки и т.п. тут не информативны, поэтому их пока не привожу.
Название: Re: Реанимация сборки 1С++
Отправлено: Forum123 от 15 апреля 2024, 19:46
О том как собрать в 2005 или 2008

https://1cpp.ru/forum/YaBB.pl?num=1221910211  1С++ users forum › 1С++ и прочие расширения v7 › Разработка › Re: ProxyDataProvider

Под 2008 у меня собирается с такими каталогами:
Цитата:
Include Dirs=
F:\_BLD\_boost\boost_1_34_1;
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl;
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\mfc;
$(WindowsSdkDir)\include;
$(VCInstallDir)include;

т.е. crt и stl берется из комплекта 2008.
Думаю, что и для 2005 можно сделать то же самое.


Название: Re: Реанимация сборки 1С++
Отправлено: Djelf от 16 апреля 2024, 09:36
Это я читал, но это было в 2008 году, с последней версией icpp 3.2.4.3 это уже не работает.
Например, сейчас на VS2008:
hr = m_pReader->SetInput(pInputStream ? pInputStream : pStream);
XmlLiteReader.cpp(176) : error C2446: :: нет преобразования 'ATL::CComPtr<T>' в 'ATL::CComPtr<T>'
16 ошибок всего, можно пофиксить, но хотелось бы этого избежать и повторить оригинальную сборку.
Черт его знает что может в процессе фиксов сломаться...
Название: Re: Реанимация сборки 1С++
Отправлено: Djelf от 18 апреля 2024, 14:32
Собралось однако. Но я собирал под CodeBlock.
Это не так важно, но зато все флаги под моим контролем, а не под контролем IDE MSVC/

Некоторые проблемы есть, но собирается на ICL 10.1.014 и 11.1.054.
Выше/ниже версии выдают непонятные ошибки, ну и ладно.
Дополнение к рецепту сборки с форума 1с++

./system/GlobalMethods.cppvoid GetRTCFull(CRuntimeClass* rtc, CString& Str)...
- GetRTCFull(rtc->m_pfnGetBaseClass(), Str);
+ //GetRTCFull(rtc->m_pfnGetBaseClass(), Str);
это нигде не используется

PSDK2003\Include\atl\atlbase.h
- #pragma comment(lib, "atlthunk.lib")
+ //#pragma comment(lib, "atlthunk.lib")
где искать эту библиотеку неизвестно и она не нужна

Компилятор
+опции компиляции /Qms2 /Qvc8 /Zl /MD
ключ /Zl нужен для исключения линковки с  отдельно распространяемой dll`кой ICL, она тоже не нужна
/Qms2 /Qvc8 /MD но вы сами пробуйте сочетания и флаги...
boost будет ругаться на /Qvc8 ну и пусть ругается... это тоже ни на что не влияет

Итоговая строка компилятора такая:
icl.exe /nologo /Ob1 /O2 -W0 /Qwd1738,1744 /Qwe1011 /Qinline-max-size:100 /EHsc /Qms2 /Qvc8 /Zl /MD /D_AFXDLL /DWIN32 /DNDEBUG /D_ANSI /D_WINDOWS /D_USRDLL /D_AFX_DLL /D_ATL_STATIC_REGISTRY /D_WIN_DLL /D_STLP_USE_STATIC_LIB /D_STLP_VERBOSE_AUTO_LINK /D_STLP_NEW_PLATFORM_SDK /D_STLP_USING_PLATFORM_SDK_COMPILER    /I..\icpp_build /I..\boost_1_34_1 /I..\STLport-5.1.5\stlport /I..\..\Compillers\PSDK2003\Include /I..\..\Compillers\PSDK2003\Include\atl /I..\..\Compillers\PSDK2003\Include\mfc /I..\..\Compillers\MSVC98\Include /c AXControl.cpp /Fo"Release Win32\AXControl.obj"
AXControl.cpp

Линкер
+ /DEF:1CPP.DEF /BASE:"0x24000000" -qnoipo
Да, я отключил такой линкер, но возможно он сработает и 0.010% вы выиграите.

Итоговая строка линкера такая:
xilink.exe /dll /nologo /LIBPATH:..\STLport-5.1.5\lib /LIBPATH:..\..\Compillers\PSDK2003\Lib /LIBPATH:..\..\Compillers\MSVC98\Lib /LIBPATH:..\..\Compillers\MSVC98\MFC\Lib /LIBPATH:LIBS /LIBPATH:..\Boost\lib /LIBPATH:E:\b\Compillers\Intel10\Lib /out:"Release Win32\1CPP.dll"
Название: Re: Реанимация сборки 1С++
Отправлено: АЛьФ от 18 апреля 2024, 14:52
Закреплю тему.
Название: Re: Реанимация сборки 1С++
Отправлено: Djelf от 18 апреля 2024, 18:37
А зачем нужен  /BASE:"0x24000000" ???
Я не понимаю... Я не настолько продвинутый...
Ну понятно, что если работает - "не  трожь", но зачем и почему?
Название: Re: Реанимация сборки 1С++
Отправлено: Forum123 от 18 апреля 2024, 20:56
Цитата: Djelf от 18 апреля 2024, 18:37А зачем нужен  /BASE:"0x24000000"

Наверное что-то из:
How to create a project on STM32H745Zi-q with Ethernet ,lwip with RTO's? https://community.st.com/t5/stm32-mcus-embedded-software/how-to-create-a-project-on-stm32h745zi-q-with-ethernet-lwip-with/td-p/295437

[U-Boot-Users] Linux зависает https://lists.denx.de/pipermail/u-boot/2006-March/014035.html

Поиск что-то типа "RAM is pointing at 0x24000000'

Для MPU STM32H7A3ZI (например, Nucleo-H7A3ZI-Q) это неверно, поскольку «обычное» ОЗУ (не DTCRAM) начинается с адреса 0x24000000 и имеет размер 1024 КБ
Название: Re: Реанимация сборки 1С++
Отправлено: trdm от 19 апреля 2024, 14:26
О, можно будет обновить парсер и сделать его 1Cv8-подобным....
Название: Re: Реанимация сборки 1С++
Отправлено: Djelf от 19 апреля 2024, 15:05
Цитата: trdm от 19 апреля 2024, 14:26О, можно будет обновить парсер и сделать его 1Cv8-подобным....
О боже, только не это! Это слишком хардкорно :o
Есть же Класс "ПоставщикДанных" и "ПрямойЗапрос".
Начинать перенос 13к строк Класса "ПрямойЗапрос" из 1С 7.7 в С++ это крайне длительное и очень мучительное начало, а закончится это все равно неизбежным провалом.
Название: Re: Реанимация сборки 1С++
Отправлено: Злоп от 19 апреля 2024, 16:50
, а закончится это все равно
потому что тут нужны настоящие погромисты, а не 1Сники! ?
Название: Re: Реанимация сборки 1С++
Отправлено: trdm от 19 апреля 2024, 16:52
Цитата: Djelf от 19 апреля 2024, 15:05ПоставщикДанных
видел я этот класс, фигурные скобочки и все такое. еще больше руслиша.
не оценил...
Название: Re: Реанимация сборки 1С++
Отправлено: АЛьФ от 19 апреля 2024, 17:01
Цитата: trdm от 19 апреля 2024, 14:26О, можно будет обновить парсер и сделать его 1Cv8-подобным....

Это как? Судя по следующему (https://forum.dorex.pro/index.php?msg=1565) комменту, не перевод на русский. Тогда что имеется в виду?
Название: Re: Реанимация сборки 1С++
Отправлено: trdm от 19 апреля 2024, 17:37
Цитата: АЛьФ от 19 апреля 2024, 17:01Это как? Судя по следующему (https://forum.dorex.pro/index.php?msg=1565) комменту, не перевод на русский. Тогда что имеется в виду?
Хотелось бы:
1. Убрать латиницу: select, from, isFolder, isMark и Data_time_iddoc, ID, IDDOC
2. Убрать типизацию.
3. Разыменование, менеджер временных таблиц.
само собой, убирать не у одбцрекордсета, а у шлюза "ПрямойЗапрос8" к примеру.
4. конструктор нормальный, у меня qryConsole.dll не пашет.
Название: Re: Реанимация сборки 1С++
Отправлено: Djelf от 19 апреля 2024, 18:12
А за чей счет будет банкет?
Название: Re: Реанимация сборки 1С++
Отправлено: trdm от 19 апреля 2024, 18:38
Цитата: Djelf от 19 апреля 2024, 18:12А за чей счет будет банкет?
за счет заказчика как всегда :)
Название: Re: Реанимация сборки 1С++
Отправлено: Djelf от 21 апреля 2024, 14:33
Цитата: trdm от 19 апреля 2024, 17:371. Убрать латиницу: select, from, isFolder, isMark и Data_time_iddoc, ID, IDDOC
Такое делать нельзя: isFolder может быть реквизитом справочника, 1С 7.7 так делать не запрещает, но в запросе будет сбой из-за совпадения реквизитов (в sqlite1c это было с Контуром, когда они влепили реквизит с именем ID).
Переименовывать штатный isFolder в ЭтоГруппа тоже не вариант, потому что ЭтоГруппа тоже может быть реквизитом.
Название: Re: Реанимация сборки 1С++
Отправлено: Злоп от 21 апреля 2024, 14:40
Цитата: Djelf от 21 апреля 2024, 14:331С 7.7 так делать не запрещает
еще вот так можно
Состояние = "куда-то";
Состояние(Состояние);

Сообщить = "что-то";
Сообщить(Сообщить);

Предупреждение("Ждун...");
Название: Re: Реанимация сборки 1С++
Отправлено: Djelf от 21 апреля 2024, 14:47
Цитата: trdm от 19 апреля 2024, 17:372. Убрать типизацию.

Ты видимо хотел написать - вреднить (очепяточка по Фрейду) и сделать автотипизацию.
Это будет невероятно сложно!
Метапарсер должен понять какая часть из substr из чего конкретного вырезанного состоит, а тут мы в отличии от 8ки, в запросах работаем с примитивами.
Не уверен что этот парсер возможно реализовать.
P.S. Мне иногда нужны не типизированные данные, для хранения их во внешних базах sqlite.
Название: Re: Реанимация сборки 1С++
Отправлено: trdm от 23 апреля 2024, 11:17
Цитата: Djelf от 21 апреля 2024, 14:47P.S. Мне иногда нужны не типизированные данные, для хранения их во внешних базах sqlite.
Ну так это оставляем для оригинального одбсрекодсета.