VS2015 - 引用程序集产生 C2869 错误
VS2015 - referenced assembly yields C2869 error
我正在使用 Visual Studio 2015 在 C++ 中构建 DLL。
DLL 的 Visual Studio 项目引用了 .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 查看新旧版本的程序集,我可以看到新程序集在命名空间 std::errc
中定义了枚举 errc
,而旧程序集在命名空间中定义了枚举 errc std
。 io_errc 也有类似的差异。
构建过程似乎在尝试编译 system_error
之前读取了引用的程序集,从而导致了上述错误。我能做些什么来使新程序集与 Visual Studio 2015 相协调吗?
此问题的解决方法是 #define
在包含 STL headers.
之前将违规项目转移到其他内容
#define errc Errc
#define io_errc Io_errc
#include <system_error>
我正在使用 Visual Studio 2015 在 C++ 中构建 DLL。
DLL 的 Visual Studio 项目引用了 .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 查看新旧版本的程序集,我可以看到新程序集在命名空间 std::errc
中定义了枚举 errc
,而旧程序集在命名空间中定义了枚举 errc std
。 io_errc 也有类似的差异。
构建过程似乎在尝试编译 system_error
之前读取了引用的程序集,从而导致了上述错误。我能做些什么来使新程序集与 Visual Studio 2015 相协调吗?
此问题的解决方法是 #define
在包含 STL headers.
#define errc Errc
#define io_errc Io_errc
#include <system_error>