2

私はユーザーモードでWPPを使用しようとしましたが、VS10で正常に使用でき、projファイルに追加してターゲットをリリースしました。

    <PropertyGroup><WdkDir>c:\work\Proj\wppTest\DDK\</WdkDir><MyTargetsDir>c:\work\Proj\wppTest</MyTargetsDir>  </PropertyGroup>

...

  <ImportGroup Label="ExtensionTargets">
    <Import Project="$(MyTargetsDir)\Wpp.targets" />
  </ImportGroup>

次に、Wpp.targetsは次のように定義されます。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
      <ExtensionsToDeleteOnClean>$(ExtensionsToDeleteOnClean);*.tmh</ExtensionsToDeleteOnClean>
  </PropertyGroup>
  <ItemGroup>
      <CoreCppClean Include="@(CoreCppClean);$(ProjectDir)">
          <FilePatternsToDelete>*.tmh</FilePatternsToDelete>
     </CoreCppClean>
  </ItemGroup>
  <ItemGroup>
    <TraceWppSources Include="@(ClCompile)" Exclude="stdafx.cpp" />
  </ItemGroup>
  <Target Name="TraceWpp" BeforeTargets="ClCompile" Inputs="@(TraceWppSources)" Outputs="@(TraceWppSources -> '%(Filename).tmh')">
    <Exec Command="cd $(ProjectDir)" />
    <Message Importance="high" Text="Creating tmh"/>
    <Exec Command="$(WdkDir)\bin\x86\tracewpp.EXE -cfgdir:$(WdkDir)\bin\wppconfig\rev1 -odir:. @(TraceWppSources, ' ')" />
    <Message Importance="high" Text="tmh created"/>
  </Target>
</Project>

この手順は、次の記事から取得されました:http ://www.devproconnections.com/article/visual-studio-2010/wpp-tracing-in-visual-c-2010-projects

VS10-> Debugでこれをコンパイルしようとすると、「tmh」ファイルが生成されていることがわかりますが、実際に何かをログに記録したいときにエラーが発生します。

DoTraceMessage(TRACE_ERROR、L "Aha"); //エラーC2065:'TRACE_ERROR':宣言されていない識別子エラーC3861:' WPP_CALL_Application_Test_cpp':識別子が見つかりません

私が言ったように、VS10->リリースターゲットの同じコードで問題はありません。参考までに、これが私の定義です。

#pragma once

#define WPP_CONTROL_GUIDS \
    WPP_DEFINE_CONTROL_GUID(CtlGuid,(28EE579B, CF67, 43b6, 9D19, 8930E7AAA131),  \
                                                                            \
        WPP_DEFINE_BIT(TRACE_ERROR)                                   \
        WPP_DEFINE_BIT(TRACE_WARNING)                                   \
        WPP_DEFINE_BIT(TRACE_INFO1)                                   \
        WPP_DEFINE_BIT(TRACE_INFO2)                                   \
        )

リリースモードを使用すると機能するのに、デバッグモードでは機能しない理由を誰かが知っていますか?

4

2 に答える 2

5

はい、問題は、「エディット コンティニュをサポートする PDB のデバッグ シンボル」でコンパイルすると、コンパイラが __LINE__ マクロを解決しないことです。

Application_Test.cpp の 51 行目からトレースすると、WPP コンパイラは関数 WPP_CALL_Application_Test_cpp51 を定義し、そのために __FILE__ と __LINE__ を使用します。

于 2012-04-24T19:26:47.927 に答える
0

DEBUG モードでコンパイルされなかった理由を見つけました。/ZI コンパイラ フラグ ( 1 ) が設定されていて、デバッグで動作するようにコンパイルするための /Zi 形式が期待されていました。

于 2012-04-24T14:48:33.417 に答える