>

Visual Studio 2019에서 log4cpp_x86을 컴파일하려고하는데 다음과 같은 오류가 발생합니다.

프로젝트의 위치를 ​​D :에서 C :로 변경하려고했지만 여전히 문제가 지속되며 폴더를 ReadOnly로 표시하지 않았지만 작동하지 않습니다.

또한 MSB3073으로 표시된 오류를 클릭하면 xml 태그가있는 Microsoft.CppCommon.targets의 행으로 리디렉션됩니다.

 <Exec Command="%(CustomBuildStep.Command)$(_BuildSuffix)"/>


  • 답변 # 1

    링크는 @HansPassant가 내 경우에는 절반 솔루션으로 제안했지만 링크에서 제안 된 절차를 따르기 전에 솔루션 파일이 손상된 전체 log4cpp 프로젝트를 아래와 같이 xml 태그로 바꿨습니다.

    <CustomBuildStep> <Command>mc $(InputPath)</Command> </CustomBuildStep>
    
    

    아래에 태그가있는 솔루션 파일이있는 오래된 프로젝트의 경우

    <CustomBuild Include="..\NTEventLogCategories.mc">
          <Command Condition="'$(Configuration)|$(Platform)'=='Debug with Boost|Win32'">"$(VS100COMNTOOLS)vsvars32.bat" if not exist $(OutDir) md $(OutDir)
    mc.exe -h "$(OutDir)" -r "$(OutDir)" "$(ProjectDir)..\%(Filename).mc"
    rc.exe -r -fo "$(OutDir)%(Filename).res" "$(OutDir)%(Filename).rc"
    link.exe /MACHINE:IX86 -dll -noentry -out:"$(OutDir)NTEventLogAppender.dll" "$(OutDir)%(Filename).res"
    </Command>
          <Command Condition="'$(Configuration)|$(Platform)'=='Debug with Boost|x64'">"$(VS100COMNTOOLS)vsvars32.bat" if not exist $(OutDir) md $(OutDir)
    mc.exe -h "$(OutDir)" -r "$(OutDir)" "$(ProjectDir)..\%(Filename).mc"
    rc.exe -r -fo "$(OutDir)%(Filename).res" "$(OutDir)%(Filename).rc"
    link.exe /MACHINE:IX86 -dll -noentry -out:"$(OutDir)NTEventLogAppender.dll" "$(OutDir)%(Filename).res"
    </Command>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug with Boost|Win32'">$(OutDir)NTEventLogAppender.dll;%(Outputs)</Outputs>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug with Boost|x64'">$(OutDir)NTEventLogAppender.dll;%(Outputs)</Outputs>
          <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(VS100COMNTOOLS)vsvars32.bat" if not exist $(OutDir) md $(OutDir)
    mc.exe -h "$(OutDir)" -r "$(OutDir)" "$(ProjectDir)..\%(Filename).mc"
    rc.exe -r -fo "$(OutDir)%(Filename).res" "$(OutDir)%(Filename).rc"
    link.exe /MACHINE:IX86 -dll -noentry -out:"$(OutDir)NTEventLogAppender.dll" "$(OutDir)%(Filename).res"
    </Command>
          <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(VS100COMNTOOLS)vsvars32.bat" if not exist $(OutDir) md $(OutDir)
    mc.exe -h "$(OutDir)" -r "$(OutDir)" "$(ProjectDir)..\%(Filename).mc"
    rc.exe -r -fo "$(OutDir)%(Filename).res" "$(OutDir)%(Filename).rc"
    link.exe /MACHINE:IX86 -dll -noentry -out:"$(OutDir)NTEventLogAppender.dll" "$(OutDir)%(Filename).res"
    </Command>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(OutDir)NTEventLogAppender.dll;%(Outputs)</Outputs>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(OutDir)NTEventLogAppender.dll;%(Outputs)</Outputs>
          <Command Condition="'$(Configuration)|$(Platform)'=='Release with Boost|Win32'">"$(VS100COMNTOOLS)vsvars32.bat" if not exist $(OutDir) md $(OutDir)
    mc.exe -h $(OutDir) -r $(OutDir) $(ProjectDir)..\%(Filename).mc
    RC.exe -r -fo $(OutDir)%(Filename).res $(OutDir)%(Filename).rc
    link.exe /MACHINE:IX86 -dll -noentry -out:$(OutDir)NTEventLogAppender.dll $(OutDir)%(Filename).res
    </Command>
          <Command Condition="'$(Configuration)|$(Platform)'=='Release with Boost|x64'">"$(VS100COMNTOOLS)vsvars32.bat" if not exist $(OutDir) md $(OutDir)
    mc.exe -h $(OutDir) -r $(OutDir) $(ProjectDir)..\%(Filename).mc
    RC.exe -r -fo $(OutDir)%(Filename).res $(OutDir)%(Filename).rc
    link.exe /MACHINE:IX86 -dll -noentry -out:$(OutDir)NTEventLogAppender.dll $(OutDir)%(Filename).res
    </Command>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Release with Boost|Win32'">$(OutDir)NTEventLogAppender.dll;%(Outputs)</Outputs>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Release with Boost|x64'">$(OutDir)NTEventLogAppender.dll;%(Outputs)</Outputs>
          <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(VS100COMNTOOLS)vsvars32.bat" if not exist $(OutDir) md $(OutDir)
    mc.exe -h $(OutDir) -r $(OutDir) $(ProjectDir)..\%(Filename).mc
    RC.exe -r -fo $(OutDir)%(Filename).res $(OutDir)%(Filename).rc
    link.exe /MACHINE:IX86 -dll -noentry -out:$(OutDir)NTEventLogAppender.dll $(OutDir)%(Filename).res
    </Command>
          <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(VS100COMNTOOLS)vsvars32.bat" if not exist $(OutDir) md $(OutDir)
    mc.exe -h $(OutDir) -r $(OutDir) $(ProjectDir)..\%(Filename).mc
    RC.exe -r -fo $(OutDir)%(Filename).res $(OutDir)%(Filename).rc
    link.exe /MACHINE:IX86 -dll -noentry -out:$(OutDir)NTEventLogAppender.dll $(OutDir)%(Filename).res
    </Command>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(OutDir)NTEventLogAppender.dll;%(Outputs)</Outputs>
          <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(OutDir)NTEventLogAppender.dll;%(Outputs)</Outputs>
        </CustomBuild>
    
    

    그리고 @HansPassant가 제안한대로 링크 단계를 수행했지만 해당 링크의 첫 번째 단계 (예 : 새 버전의 log4cpp 다운로드)를 따르지 않았습니다. 프로젝트를 이전 프로젝트로 바꾼 다음 모두 따라갔습니다. 해당 링크의 제안에 따라 절차를 수행하면 문제가 해결되었습니다.

  • 이전 Powershell에서 직접 보고서를 나열하는 방법
  • 다음 androidsupportdesigninternal *을 가져올 수 없습니다