e1337e4016
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается. - .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным (safety-net на случай повторной локальной выгрузки). - CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
35 lines
3.2 KiB
Markdown
35 lines
3.2 KiB
Markdown
---
|
|
title: "Рекомендации по доработкам библиотек, написанных на VC++, не имеющих WinApp и использующих MFC"
|
|
type: guide
|
|
api: [api7]
|
|
tags: [guide, api7, vc]
|
|
sources:
|
|
- vc_recommendations.html
|
|
---
|
|
|
|
*Компиляция библиотек*
|
|
|
|
Для таких библиотек доработки ОБЯЗАТЕЛЬНЫ! Без доработок происходят вылеты при открытии диалогов.
|
|
Библиотеки, написанные с использованием VC++, имеющие тип extension dll и использующие классы MFC (например CString, CWnd, CDialog), требуют обязательной перекомпиляции под Unicode, т.к. система КОМПАС V10 переведена на Unicode.
|
|
Для перекомпиляции необходимо выполнить следующие действия.
|
|
1.Создать копию конфигураций Debug и Release.
|
|
2.Добавить в новые конфигурации предопределенные объявления _UNICODE, UNICODE.
|
|
3.Убрать _MBCS в настройках проекта.
|
|
См. Project Settings C/C++ Preprocessor definitions.
|
|
Использование Unicode потребует коррекции функций и типов переменных — как минимум в функциях, использующих MFC. Например, потребуется замена некоторых переменных типа char * на TCHAR*. Каких именно, покажет компилятор.
|
|
TCHAR при компиляции под Unicode заменяется на wchar_t, при компиляции без использования Unicode — на char.
|
|
Строковые константы в коде необходимо окружить дефайном _T, например:
|
|
char str[250] = ""; заменяется на
|
|
TCHAR str[250] = _T("");
|
|
Потребуется замена вызова неюникодных функций, работающих со строками на объявления, которые в зависимости от типа компиляции заменяются на юникодный или неюникодный аналог функции. Например:
|
|
strcmp strcpy atof
|
|
Данные функции в местах, где будет использоваться TCHAR *, необходимо заменить на объявления из файла TCHAR.h. Пример замен:
|
|
| sprintf | _tprintf |
|
|
| --- | --- |
|
|
| atof | _tcstod |
|
|
| strlen | _tcslen |
|
|
| strcpy | _tcscpy |
|
|
В Коломне разработан макрос, который позволяет упростить перевод текстов на Unicode (cм. ConvertToUnicode.dcm и инструкцию по подключению макроса к VC++ 6.0).
|
|
В API КОМПАС 10 появились юникодные аналоги функций и структур, в которых использовались char *.
|
|
При необходимости в библиотеке можно вставить их использование.
|