Я отвечаю за сборку старой версии библиотеки с открытым исходным кодом для OSX 10.5.(Библиотека Xerces 2.8.)
Библиотека не может быть встроена в OSX 10.5 из-за (среди прочего) использования прекращенной функции OSX CopyCStringToPascal()
.Соответствующий фрагмент кода:
Str255 pasEncodingName;
...
CopyCStringToPascal(cEncodingName, pasEncodingName);
TECGetTextEncodingFromInternetName (&textEncoding, pasEncodingName);
Исследование показало, что CopyCStringToPascal()
действительно преобразовывает строку C в строку в стиле Паскаля (строка, для которой первый байт предоставляет количество символов встрока).Поэтому из контекста ясно, что вторым параметром TECGetTextEncodingFromInternetName()
должна быть строка в стиле Паскаля (хотя я не могу найти это подтвержденное ни в одной документации по очистке интернета).
Поскольку новейшая версиябиблиотека с открытым исходным кодом (Xerces 3.1) успешно строится на OSX 10.5, и ее реализация явно определяет функцию CopyCStringToPascal()
(поскольку она была прекращена в OSX 10.5) для создания строки в стиле Pascal, и продолжает использовать TECGetTextEncodingFromInternetName()
(который не был прекращен в OSX 10.5), я верю, что это является подтверждением того, что TECGetTextEncodingFromInternetName()
продолжает требовать строку в стиле Pascal даже для OSX 10.5.
Поскольку строки в стиле Pascal требуются ВСЕ ЕЩЕиз-за текущих системных процедур OSX 10.5 я озадачен тем, почему функция CopyCStringToPascal()
, преобразующая в такую необходимую строку Паскаля, была прекращена в OSX 10.5.Я пишу этот вопрос, чтобы еще раз подтвердить, что я не делаю ошибку, просто явно определив эту функцию для Xerces 2.8 (и в противном случае ничего не меняя в области кода, относящейся к этому обсуждению), чтобы заставить Xerces 2.8сборка с OSX 10.5.Спасибо.