Compartir a través de


Cómo corregir errores de compilación de TraceLogging

En este tema se describen algunos errores de compilación comunes y cómo resolverlos.

Caso 1: errores de "DECLSPEC_SAFEBUFFERS"

Error de compilación (fragmento de código):

1>traceloggingprovider.h(1592): error C2146: syntax error : missing ';' before identifier 'TLG_STATUS'
1>traceloggingprovider.h(1592): error C2433: 'DECLSPEC_SAFEBUFFERS' : 'inline' not permitted on data declarations
1>traceloggingprovider.h(1592): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Arreglar:
Incluya windows.h antes de incluir TraceLoggingProvider.h en el archivo de origen.

Caso 2: Registro de seguimiento en aplicaciones modernas de C++

Error de compilación (fragmento de código):
Después de copiar los archivos de encabezado traceLogging en el entorno de compilación y agregar esta línea:

TraceLoggingRegisterByGuid(g_3DBuilderTraceProvider, &s_3DBuilderTraceProviderGuid);

Tiene este error del enlazador:

Error 2 error LNK2001: unresolved external symbol __imp__EventSetInformation@20 
        E:\TFS\Main\PrintPreviewR5\Viewers\PrintPreview\App.xaml.obj    PrintPreview
Error 3 error LNK2001: unresolved external symbol __imp__EventRegister@16       
        E:\TFS\Main\PrintPreviewR5\Viewers\PrintPreview\App.xaml.obj    PrintPreview

Arreglar:
Las aplicaciones para UWP deben vincularse con advapi32.lib para resolver este problema de referencia.

Caso 3: Compilaciones de teléfono

Error de compilación (fragmento de código):
Al compilar el archivo dictationuimodel.cpp, obtendrá el error:

traceloggingprovider.h(1592) : error C2146: syntax error : missing ';' before identifier 'TLG_STATUS'
traceloggingprovider.h(1592) : error C2433: 'DECLSPEC_SAFEBUFFERS' : 'inline' not permitted on data declarations

Arreglar:
Vea Caso n.º 1. Es probable que el SDK no defina la macro DECLSPEC_SAFEBUFFERS. Los SDK actualizados tienen una definición para esta macro. Si el SDK no define esta macro, deberá proporcionar su propia definición. DECLSPEC_SAFEBUFFERS se define en winnt.h, que windows.h debe incluir. Además, hasta la versión pública del SDK de Windows 10, es posible que tenga que definir la palabra clave Telemetry:

#ifndef WINEVENT_KEYWORD_TELEMETRY 
#define WINEVENT_KEYWORD_TELEMETRY  0x2000000000000
#endif