Мой проект компилируется в vs2008 без единой проблемы, но не в 2010? - PullRequest
2 голосов
/ 13 августа 2011

У меня есть проект C ++, который будет прекрасно компилироваться в 2008 году, а в 2010 году он просто не будет компилироваться.

В 2010 году, если я изменю его на многобайтовый набор символов, он будет компилироваться, но строки не будут работать должным образомможет точно описать, что с ним происходит, если я не изменю его, появятся приведенные ниже коды ошибок и предупреждений.

В 2008 году он компилируется и прекрасно работает без единой проблемы.

IЯ не очень умел в C ++, поэтому, если это возможно, простой для понимания ответ, как можно более подробный, очень помог бы мне понять, что происходит, и, возможно, исправить это.

Вот ошибки и предупреждения, когда это не такв многобайтовом формате:

    12  IntelliSense: argument of type "char *" is incompatible with parameter of type "LPCWSTR"
    13  IntelliSense: argument of type "char *" is incompatible with parameter of type "LPCWSTR"
Error   10  error C2664: 'URLDownloadToFileW' : cannot convert parameter 2 from 'char [255]' to 'LPCWSTR'
Error   2   error C2664: 'strcmp' : cannot convert parameter 1 from 'WCHAR [256]' to 'const char *'
Error   3   error C2664: 'SetConsoleTitleW' : cannot convert parameter 1 from 'const char [11]' to 'LPCWSTR'
Error   4   error C2664: 'GetModuleHandleW' : cannot convert parameter 1 from 'const char [9]' to 'LPCWSTR'
Error   5   error C2664: 'GetModuleHandleW' : cannot convert parameter 1 from 'const char [9]' to 'LPCWSTR'
Error   11  error C2664: 'GetModuleHandleW' : cannot convert parameter 1 from 'const char [15]' to 'LPCWSTR'
Error   6   error C2664: 'CreateEventW' : cannot convert parameter 4 from 'const char [20]' to 'LPCWSTR'
Error   9   error C2664: 'CCmdHandler::AddMessageBytes' : cannot convert parameter 1 from 'TCHAR *' to 'char *'
Error   7   error C2440: 'initializing' : cannot convert from 'const char [16]' to 'LPTSTR'
Error   8   error C2440: 'initializing' : cannot convert from 'const char [16]' to 'LPTSTR'
Error   1   error C2440: '<function-style-cast>' : cannot convert from 'WCHAR [256]' to 'std::string'

Файл проекта C ++:

<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
    ProjectType="Visual C++"
    Version="9.00"
    Name="TheProject"
    ProjectGUID="{96791392-AA33-4460-BFEA-D766216ECAA8}"
    RootNamespace="TheProject"
    Keyword="Win32Proj"
    TargetFrameworkVersion="196613"
    >
    <Platforms>
        <Platform
            Name="Win32"
        />
    </Platforms>
    <ToolFiles>
    </ToolFiles>
    <Configurations>
        <Configuration
            Name="Debug|Win32"
            OutputDirectory="$(SolutionDir)$(ConfigurationName)"
            IntermediateDirectory="$(ConfigurationName)"
            ConfigurationType="2"
            CharacterSet="1"
            >
            <Tool
                Name="VCPreBuildEventTool"
            />
            <Tool
                Name="VCCustomBuildTool"
            />
            <Tool
                Name="VCXMLDataGeneratorTool"
            />
            <Tool
                Name="VCWebServiceProxyGeneratorTool"
            />
            <Tool
                Name="VCMIDLTool"
            />
            <Tool
                Name="VCCLCompilerTool"
                Optimization="0"
                PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;THEPROJECT_EXPORTS;LOGTOCONSOLE"
                MinimalRebuild="true"
                BasicRuntimeChecks="3"
                RuntimeLibrary="3"
                UsePrecompiledHeader="2"
                WarningLevel="3"
                DebugInformationFormat="4"
            />
            <Tool
                Name="VCManagedResourceCompilerTool"
            />
            <Tool
                Name="VCResourceCompilerTool"
            />
            <Tool
                Name="VCPreLinkEventTool"
            />
            <Tool
                Name="VCLinkerTool"
                LinkIncremental="2"
                GenerateDebugInformation="true"
                SubSystem="2"
                TargetMachine="1"
            />
            <Tool
                Name="VCALinkTool"
            />
            <Tool
                Name="VCManifestTool"
            />
            <Tool
                Name="VCXDCMakeTool"
            />
            <Tool
                Name="VCBscMakeTool"
            />
            <Tool
                Name="VCFxCopTool"
            />
            <Tool
                Name="VCAppVerifierTool"
            />
            <Tool
                Name="VCPostBuildEventTool"
            />
        </Configuration>
        <Configuration
            Name="Release|Win32"
            OutputDirectory="$(SolutionDir)$(ConfigurationName)"
            IntermediateDirectory="$(ConfigurationName)"
            ConfigurationType="2"
            CharacterSet="2"
            WholeProgramOptimization="1"
            >
            <Tool
                Name="VCPreBuildEventTool"
            />
            <Tool
                Name="VCCustomBuildTool"
            />
            <Tool
                Name="VCXMLDataGeneratorTool"
            />
            <Tool
                Name="VCWebServiceProxyGeneratorTool"
            />
            <Tool
                Name="VCMIDLTool"
            />
            <Tool
                Name="VCCLCompilerTool"
                AdditionalOptions="-D_SCL_SECURE_NO_WARNINGS"
                Optimization="0"
                InlineFunctionExpansion="1"
                EnableIntrinsicFunctions="true"
                FavorSizeOrSpeed="1"
                AdditionalIncludeDirectories="&quot;C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include&quot;"
                PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;THEPROJECT_EXPORT;LOGTOCONSOLE"
                ExceptionHandling="2"
                RuntimeLibrary="2"
                BufferSecurityCheck="false"
                EnableFunctionLevelLinking="false"
                UsePrecompiledHeader="2"
                WarningLevel="3"
                DebugInformationFormat="3"
            />
            <Tool
                Name="VCManagedResourceCompilerTool"
            />
            <Tool
                Name="VCResourceCompilerTool"
            />
            <Tool
                Name="VCPreLinkEventTool"
            />
            <Tool
                Name="VCLinkerTool"
                LinkIncremental="1"
                AdditionalLibraryDirectories="..\lib"
                GenerateDebugInformation="false"
                SubSystem="2"
                OptimizeReferences="2"
                EnableCOMDATFolding="2"
                TargetMachine="1"
            />
            <Tool
                Name="VCALinkTool"
            />
            <Tool
                Name="VCManifestTool"
            />
            <Tool
                Name="VCXDCMakeTool"
            />
            <Tool
                Name="VCBscMakeTool"
            />
            <Tool
                Name="VCFxCopTool"
            />
            <Tool
                Name="VCAppVerifierTool"
            />
            <Tool
                Name="VCPostBuildEventTool"
            />
        </Configuration>
    </Configurations>
    <References>
    </References>
    <Files>
        <Filter
            Name="Quelldateien"
            Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
            UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
            >
            <File
                RelativePath=".\CmdHandler.cpp"
                >
            </File>
            <File
                RelativePath=".\ConsoleCMD.cpp"
                >
            </File>
            <File
                RelativePath=".\dllmain.cpp"
                >
                <FileConfiguration
                    Name="Debug|Win32"
                    >
                    <Tool
                        Name="VCCLCompilerTool"
                        UsePrecompiledHeader="0"
                        CompileAsManaged="0"
                    />
                </FileConfiguration>
                <FileConfiguration
                    Name="Release|Win32"
                    >
                    <Tool
                        Name="VCCLCompilerTool"
                        UsePrecompiledHeader="0"
                        CompileAsManaged="0"
                    />
                </FileConfiguration>
            </File>
            <File
                RelativePath=".\EntiyManager.cpp"
                >
            </File>
            <File
                RelativePath=".\ICommand.cpp"
                >
            </File>
            <File
                RelativePath=".\MiscManager.cpp"
                >
            </File>
            <File
                RelativePath=".\PipeProtocol.cpp"
                >
            </File>
            <File
                RelativePath=".\Pipes.cpp"
                >
            </File>
            <File
                RelativePath=".\stdafx.cpp"
                >
                <FileConfiguration
                    Name="Debug|Win32"
                    >
                    <Tool
                        Name="VCCLCompilerTool"
                        UsePrecompiledHeader="1"
                    />
                </FileConfiguration>
                <FileConfiguration
                    Name="Release|Win32"
                    >
                    <Tool
                        Name="VCCLCompilerTool"
                        UsePrecompiledHeader="1"
                    />
                </FileConfiguration>
            </File>
        </Filter>
        <Filter
            Name="Headerdateien"
            Filter="h;hpp;hxx;hm;inl;inc;xsd"
            UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
            >
            <File
                RelativePath=".\CmdHandler.h"
                >
            </File>
            <File
                RelativePath=".\CommandIDList.h"
                >
            </File>
            <File
                RelativePath=".\ConsoleCMD.h"
                >
            </File>
            <File
                RelativePath=".\detours.h"
                >
            </File>
            <File
                RelativePath=".\EntiyManager.h"
                >
            </File>
            <File
                RelativePath=".\hide.h"
                >
            </File>
            <File
                RelativePath=".\ICommand.h"
                >
            </File>
            <File
                RelativePath=".\IOnFrameClient.h"
                >
            </File>
            <File
                RelativePath=".\Log.h"
                >
            </File>
            <File
                RelativePath=".\MiscManager.h"
                >
            </File>
            <File
                RelativePath=".\PipeProtocol.h"
                >
            </File>
            <File
                RelativePath=".\Pipes.h"
                >
            </File>
            <File
                RelativePath=".\stdafx.h"
                >
            </File>
            <File
                RelativePath=".\targetver.h"
                >
            </File>
        </Filter>
        <Filter
            Name="Ressourcendateien"
            Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
            UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
            >
        </Filter>
        <File
            RelativePath=".\ReadMe.txt"
            >
        </File>
    </Files>
    <Globals>
    </Globals>
</VisualStudioProject>

1 Ответ

4 голосов
/ 13 августа 2011

Ваш код не предназначен для работы со строками UNICODE. Поэтому вы должны проверить настройки своего проекта и проверить в разделе «Общие», какой «Набор символов» вы используете. Я полагаю, у вас есть «Использовать набор символов Unicode», но вам нужно изменить его на «Не установлен». «Использовать многобайтовый набор символов» не то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...