UNICODE
определения Сборка Windows UNICODE строится с TCHAR
и т. Д., Определенным как wchar_t
и т. Д. Когда не выполняется сборка с UNICODE
, определенным как сборка с TCHAR
, определенным как char
и т. Д. Эти определения UNICODE
и _UNICODE
влияют на все типы строк «T
» ; LPTSTR
, LPCTSTR
и их лось.
Создание одной библиотеки с определенным UNICODE
и попытка связать ее в проекте, где UNICODE
не определено, приведет к ошибкам компоновщика, поскольку в определении TCHAR
будет несоответствие; char
против wchar_t
.
Ошибка обычно включает в себя функцию со значением производного типа char
или wchar_t
, к ним также может относиться std::basic_string<>
и т. Д. При просмотре уязвимой функции в коде часто встречается ссылка на TCHAR
или std::basic_string
и т. Д. Это контрольный признак того, что код изначально предназначался как для UNICODE, так и для многобайтового символа ( или "узкая") сборка.
Чтобы исправить это, соберите все необходимые библиотеки и проекты с непротиворечивым определением UNICODE
(и _UNICODE
).
Это можно сделать с помощью:
#define UNICODE
#define _UNICODE
Или в настройках проекта;
Свойства проекта> Общие > Проект по умолчанию> Набор символов
Или в командной строке;
/DUNICODE /D_UNICODE
Альтернатива также применима, если UNICODE не предназначен для использования, убедитесь, что определения не установлены, и / или многосимвольная настройка используется в проектах и применяется последовательно.
Не забывайте также соблюдать согласованность между сборками «Release» и «Debug».
WhiteStarUML (старым названием был StarUML) https://sourceforge.net/projects/whitestaruml / , Но он имеет проблемы о Высоком DPI.
, Но лучше использовать созданный в методах UML: https://www.youtube.com/watch? v=LTpAAz3WkZk