我尝试在用户模式下使用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-&gt; Debug下编译时,我可以看到只生成了“tmh”文件,当我想记录某些东西时我收到错误:
DoTraceMessage(TRACE_ERROR,L“Aha”); //错误C2065:'TRACE_ERROR':未声明的标识符错误C3861:'WPP_CALL_Application_Test_cpp':未找到标识符
正如我所说,我对VS10-&gt;发布目标上的相同代码没有任何问题。这是我的参考定义:
#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) \
)
有没有人知道为什么使用Release模式可能有效,但在Debug模式下不起作用?
答案 0 :(得分:3)
是的,问题是当您使用“带有编辑和继续支持的PDB中的调试符号”进行编译时,编译器无法解析__LINE__宏。
如果从Application_Test.cpp第51行进行跟踪,WPP编译器定义了一个函数WPP_CALL_Application_Test_cpp51,并使用__FILE__和__LINE__来执行此操作。
答案 1 :(得分:0)
找出它没有在DEBUG模式下编译的原因。我设置了/ ZI编译器标志(1),并且期望用于编译的/ Zi格式在Debug中工作。