Я создаю DLL с Visual Studio 2015, на C++.VS2015 - ссылочная сборка дает ошибку C2869
Проект Visual Studio для DLL ссылается на сборку .NET. (Один из файлов в проекте - файл C++/CLI.) Эта сборка .NET предоставляется третьей стороной, и они предоставили новую версию сборки.
Создание проекта со старой версией сборки отлично работает, но когда я строю с новой версией сборки, я получаю следующие ошибки:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(24): error C2869: 'std::errc': has already been defined to be a namespace
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(109): error C2869: 'std::io_errc': has already been defined to be a namespace
Глядя на старые и новые версии в сборке с ildasm я вижу, что новая сборка определяет перечисление errc
в пространстве имен std::errc
, тогда как старая сборка определяет enum errc в пространстве имен std
. Аналогичные различия существуют и для io_errc.
Похоже, что процесс сборки считывает ссылочную сборку, прежде чем попытается скомпилировать system_error
, что приведет к ошибкам выше. Есть ли что-нибудь, что я могу сделать, чтобы согласовать новую сборку с Visual Studio 2015?