Please enable JavaScript to view this site.

Компиляция библиотек

Рекомендации по доработкам библиотек, написанных на VC++, не имеющих WinApp и использующих MFC

Scroll

Для таких библиотек доработки ОБЯЗАТЕЛЬНЫ! Без доработок происходят вылеты при открытии диалогов.
Библиотеки, написанные с использованием 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 *.
При необходимости в библиотеке можно вставить их использование.

© ООО «АСКОН-Системы проектирования», 2024. Все права защищены. | Единая телефонная линия: 8-800-700-00-78