Мой проект использует CMake в качестве системы сборки и разработан в среде IDE JetBrains CLion. . Все мои исходные файлы закодированы в UTF-8. Языковой стандарт моей системы также установлен на UTF-8, а консоль использует кодовую страницу 65001 (UTF-8).
Вот пример вывода:
Код: Выделить всё
agentprocesscontroller.obj : error LNK2019: ����������ⲿ���� "public: void __cdecl DDS_UserInteractManager::TopicData::publish(class boost::shared_ptr const &)" (?publish@?$TopicData@V?$shared_ptr@UDataType@vec_EntityBasicData@EnvSimuData@@@boost@@Uin_tag@DDS_UserInteractManager@@@DDS_UserInteractManager@@QEAAXAEBV?$shared_ptr@UDataType@vec_EntityBasicData@EnvSimuData@@@boost@@@Z)�������ں��� ...
Вот что я уже пробовал:
- Я установил /utf- 8 параметр компиляции в файле CMakeLists.txt для MSVC:
Код: Выделить всё
if (MSVC) set(CMAKE_C_FLAGS /utf-8) set(CMAKE_CXX_FLAGS /utf-8) # enable boost exception handling set(CMAKE_CXX_FLAGS "/EHsc ${CMAKE_CXX_FLAGS}") endif () - Я подтвердил, что для кодовой страницы консоли установлено значение 65001 (UTF-8), с помощью команды chcp.
- Я подтвердил, что все мои исходные файлы закодированы в UTF-8.
- Я проверил это с помощью простой программы, которая намеренно вызывает ошибку компоновщика, и она будет также выводится в искаженном виде.
Код: Выделить всё
#include
void foo(); // Function declaration without a definition
int main() {
foo(); // Call to undefined function
return 0;
}
Вот пример ошибки компиляции, которая отображается правильно:
Код: Выделить всё
F:\Program\SimCSC\ProxyV2\main.cpp(10): error C2146: 语法错误: 缺少“;”(在标识符“QApplication”的前面) [F:\Program\SimCSC\ProxyV2\cmake-build-debug\ProxyV2.vcxproj]
Подробнее здесь: https://stackoverflow.com/questions/769 ... nvironment