c++ - 包含 <string> 时 xutility 出错

标签 c++ string visual-studio-2008 cross-platform standard-library

得到了一个非常简单的C++ VC9工程,它由一个头文件和一个源文件组成,

#ifndef t_h
#define t_h
#include <string>
std::string foo();
#endif // t_h

#include "t.h"
std::string foo(){return "foo";};

这个项目的构建日志是

1>t.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(945) : error C2766: explicit specialization; 'std::iterator_traits<size_t>' has already been defined
1>        C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(877) : see previous definition of 'iterator_traits<unsigned __int64>'
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(1472) : error C2766: explicit specialization; 'std::_Ptr_cat_helper<size_t*,size_t*>' has already been defined
1>        C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(1384) : see previous definition of '_Ptr_cat_helper<unsigned __int64 *,unsigned __int64 *>'
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(1478) : error C2766: explicit specialization; 'std::_Ptr_cat_helper<const size_t*,size_t*>' has already been defined
1>        C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(1390) : see previous definition of '_Ptr_cat_helper<unsigned __int64 const *,unsigned __int64 *>'

编辑 *在我得到的 xutility 文件中,这些错误在 #ifdef _LONGLONG block 中;不知道在哪里定义了 _LONGLONG*

在 32 平台上构建是可以的。有谁知道如何解决这些错误?谢谢。

项目文件,以防万一有人查看它:

<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
    ProjectType="Visual C++"
    Version="9.00"
    Name="test"
    ProjectGUID="{E9D20D01-C8A4-4477-BD8A-61BB92D3AB77}"
    RootNamespace="test"
    Keyword="ManagedCProj"
    TargetFrameworkVersion="196613"
    >
    <Platforms>
        <Platform
            Name="Win32"
        />
        <Platform
            Name="x64"
        />
    </Platforms>
    <ToolFiles>
    </ToolFiles>
    <Configurations>
        <Configuration
            Name="Debug|Win32"
            OutputDirectory="$(SolutionDir)$(ConfigurationName)"
            IntermediateDirectory="$(ConfigurationName)"
            ConfigurationType="4"
            CharacterSet="2"
            ManagedExtensions="0"
            >
            <Tool
                Name="VCPreBuildEventTool"
            />
            <Tool
                Name="VCCustomBuildTool"
            />
            <Tool
                Name="VCXMLDataGeneratorTool"
            />
            <Tool
                Name="VCWebServiceProxyGeneratorTool"
            />
            <Tool
                Name="VCMIDLTool"
            />
            <Tool
                Name="VCCLCompilerTool"
                Optimization="0"
                AdditionalIncludeDirectories=".\.."
                PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS"
                BasicRuntimeChecks="3"
                RuntimeLibrary="3"
                StructMemberAlignment="0"
                ObjectFile="$(IntDir)\"
                WarningLevel="3"
                DebugInformationFormat="3"
            />
            <Tool
                Name="VCManagedResourceCompilerTool"
            />
            <Tool
                Name="VCResourceCompilerTool"
            />
            <Tool
                Name="VCPreLinkEventTool"
            />
            <Tool
                Name="VCLibrarianTool"
                OutputFile="..\..\..\lib\test_x32_mtd.lib"
                AdditionalLibraryDirectories=""
            />
            <Tool
                Name="VCALinkTool"
            />
            <Tool
                Name="VCXDCMakeTool"
            />
            <Tool
                Name="VCBscMakeTool"
            />
            <Tool
                Name="VCFxCopTool"
            />
            <Tool
                Name="VCPostBuildEventTool"
            />
        </Configuration>
        <Configuration
            Name="Debug|x64"
            OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
            IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
            ConfigurationType="4"
            CharacterSet="2"
            ManagedExtensions="0"
            >
            <Tool
                Name="VCPreBuildEventTool"
            />
            <Tool
                Name="VCCustomBuildTool"
            />
            <Tool
                Name="VCXMLDataGeneratorTool"
            />
            <Tool
                Name="VCWebServiceProxyGeneratorTool"
            />
            <Tool
                Name="VCMIDLTool"
                TargetEnvironment="3"
            />
            <Tool
                Name="VCCLCompilerTool"
                Optimization="0"
                AdditionalIncludeDirectories=".\.."
                PreprocessorDefinitions="WIN64;_DEBUG"
                BasicRuntimeChecks="3"
                RuntimeLibrary="3"
                StructMemberAlignment="0"
                ObjectFile="$(IntDir)\"
                WarningLevel="3"
                DebugInformationFormat="3"
            />
            <Tool
                Name="VCManagedResourceCompilerTool"
            />
            <Tool
                Name="VCResourceCompilerTool"
            />
            <Tool
                Name="VCPreLinkEventTool"
            />
            <Tool
                Name="VCLibrarianTool"
                OutputFile="..\..\..\lib\test_x64_mtd.lib"
                AdditionalLibraryDirectories=""
            />
            <Tool
                Name="VCALinkTool"
            />
            <Tool
                Name="VCXDCMakeTool"
            />
            <Tool
                Name="VCBscMakeTool"
            />
            <Tool
                Name="VCFxCopTool"
            />
            <Tool
                Name="VCPostBuildEventTool"
            />
        </Configuration>
        <Configuration
            Name="Release|Win32"
            OutputDirectory="$(SolutionDir)$(ConfigurationName)"
            IntermediateDirectory="$(ConfigurationName)"
            ConfigurationType="4"
            CharacterSet="2"
            ManagedExtensions="0"
            >
            <Tool
                Name="VCPreBuildEventTool"
            />
            <Tool
                Name="VCCustomBuildTool"
            />
            <Tool
                Name="VCXMLDataGeneratorTool"
            />
            <Tool
                Name="VCWebServiceProxyGeneratorTool"
            />
            <Tool
                Name="VCMIDLTool"
            />
            <Tool
                Name="VCCLCompilerTool"
                Optimization="2"
                AdditionalIncludeDirectories=".\.."
                PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS"
                BasicRuntimeChecks="0"
                RuntimeLibrary="2"
                StructMemberAlignment="0"
                ObjectFile="$(IntDir)\"
                WarningLevel="3"
                DebugInformationFormat="0"
            />
            <Tool
                Name="VCManagedResourceCompilerTool"
            />
            <Tool
                Name="VCResourceCompilerTool"
            />
            <Tool
                Name="VCPreLinkEventTool"
            />
            <Tool
                Name="VCLibrarianTool"
                OutputFile="..\..\..\lib\test_x32_mt.lib"
                AdditionalLibraryDirectories=""
            />
            <Tool
                Name="VCALinkTool"
            />
            <Tool
                Name="VCXDCMakeTool"
            />
            <Tool
                Name="VCBscMakeTool"
            />
            <Tool
                Name="VCFxCopTool"
            />
            <Tool
                Name="VCPostBuildEventTool"
            />
        </Configuration>
        <Configuration
            Name="Release|x64"
            OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
            IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
            ConfigurationType="4"
            CharacterSet="2"
            ManagedExtensions="0"
            >
            <Tool
                Name="VCPreBuildEventTool"
            />
            <Tool
                Name="VCCustomBuildTool"
            />
            <Tool
                Name="VCXMLDataGeneratorTool"
            />
            <Tool
                Name="VCWebServiceProxyGeneratorTool"
            />
            <Tool
                Name="VCMIDLTool"
                TargetEnvironment="3"
            />
            <Tool
                Name="VCCLCompilerTool"
                Optimization="2"
                AdditionalIncludeDirectories=".\.."
                PreprocessorDefinitions="WIN64;NDEBUG"
                BasicRuntimeChecks="0"
                RuntimeLibrary="2"
                StructMemberAlignment="0"
                ObjectFile="$(IntDir)\"
                WarningLevel="3"
                DebugInformationFormat="0"
            />
            <Tool
                Name="VCManagedResourceCompilerTool"
            />
            <Tool
                Name="VCResourceCompilerTool"
            />
            <Tool
                Name="VCPreLinkEventTool"
            />
            <Tool
                Name="VCLibrarianTool"
                OutputFile="..\..\..\lib\test_x64_mt.lib"
                AdditionalLibraryDirectories=""
            />
            <Tool
                Name="VCALinkTool"
            />
            <Tool
                Name="VCXDCMakeTool"
            />
            <Tool
                Name="VCBscMakeTool"
            />
            <Tool
                Name="VCFxCopTool"
            />
            <Tool
                Name="VCPostBuildEventTool"
            />
        </Configuration>
    </Configurations>
    <References>
    </References>
    <Files>
        <File
            RelativePath=".\t.cpp"
            >
        </File>
        <File
            RelativePath=".\t.h"
            >
        </File>
    </Files>
    <Globals>
    </Globals>
</VisualStudioProject>

最佳答案

您将 LONGLONG 从 __int64 变形为 size_t。很不健康。

检查 vc/include 目录中文件的日期戳,确保它们仍然是原始文件,没有被失控的 Edit+Replace 意外编辑。

关于c++ - 包含 <string> 时 xutility 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15640860/

相关文章:

c++ - 使用 WRL 迭代 IMapView

c++ - iOS - GCC 无法看到似乎清晰可见的功能

c++ - Qt::UniqueConnection 是如何工作的?

string - 如何在 Redis 中进行搜索?

sql-server - 如何使用 SQL Server CE 和 SQL Server 2008 Express?

c++ - 在 Linux 上优化 WebKit 中的动画性能

python - 查找两个字符串不同的位置

javascript - 为什么一美元消失了?

visual-studio-2008 - wdproj 打不开

visual-studio-2008 - 是否可以更改 Visual Studio 2008 界面语言?