2012-04-24 1 views
1

je tente d'utiliser WPP en mode utilisateur, a réussi à utiliser avec succès dans VS10, cible de sortie en ajoutant au fichier proj:utilisation WPP de l'application en mode utilisateur

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

... 

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

Ensuite Wpp.targets est défini comme celui-ci :

<?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> 

cette mesures ont été prises à l'article: http://www.devproconnections.com/article/visual-studio-2010/wpp-tracing-in-visual-c-2010-projects

Lorsque vous essayez de compiler cette sous VS10-> Debug je peux voir que les fichiers « de TMH » sont générés seulement que je g et erreur lorsque je veux enregistrer quelque chose:

DoTraceMessage (TRACE_ERROR, L "Aha"); // erreur C2065: 'TRACE_ERROR': erreur d'identificateur non déclarée C3861: 'WPP_CALL_Application_Test_cpp': identificateur non trouvé

Comme je l'ai dit, je n'ai aucun problème avec le même code sur VS10-> Libérer la cible. Voici ma référence: définit pour

#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)         \ 
     ) 

Est-ce que quelqu'un a une idée pourquoi cela pourrait fonctionner en utilisant le mode de sortie, mais ne fonctionne pas en mode débogage?

Répondre

3

Oui, le problème est que lorsque vous compilez avec les "symboles de débogage dans PDB avec Edit & Continuer le support" le compilateur ne résout pas la macro __LINE__.

Le compilateur WPP définit une fonction WPP_CALL_Application_Test_cpp51 si vous tracez à partir de la ligne Application_Test.cpp 51 et utilise __FILE__ et __LINE__ pour ce faire.

0

Découvert la raison pour laquelle il ne compilait pas en mode DEBUG. J'avais l'indicateur de compilateur/ZI (1) défini et attendait le format/Zi pour la compilation pour fonctionner dans Debug.

Questions connexes