2012-04-14 7 views
5

Uso de Visual Studio Express 2010 Hice un proyecto de Windows con las opciones Aplicación de Windows y Proyecto vacío. Luego trató el following code snippet de los tutoriales de MSDN Windows:Símbolos externos sin resolver __RTC_ * en el tutorial de programación de Windows

#include <windows.h> 
#include <shobjidl.h> 

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow) 
{ 
    HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | 
     COINIT_DISABLE_OLE1DDE); 
    if (SUCCEEDED(hr)) 
    { 
     IFileOpenDialog *pFileOpen; 

     // Create the FileOpenDialog object. 
     hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL, 
       IID_IFileOpenDialog, reinterpret_cast<void**>(&pFileOpen)); 

     if (SUCCEEDED(hr)) 
     { 
      // Show the Open dialog box. 
      hr = pFileOpen->Show(NULL); 

      // Get the file name from the dialog box. 
      if (SUCCEEDED(hr)) 
      { 
       IShellItem *pItem; 
       hr = pFileOpen->GetResult(&pItem); 
       if (SUCCEEDED(hr)) 
       { 
        PWSTR pszFilePath; 
        hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath); 

        // Display the file name to the user. 
        if (SUCCEEDED(hr)) 
        { 
         MessageBox(NULL, pszFilePath, L"File Path", MB_OK); 
         CoTaskMemFree(pszFilePath); 
        } 
        pItem->Release(); 
       } 
      } 
      pFileOpen->Release(); 
     } 
     CoUninitialize(); 
    } 
    return 0; 
} 

me los siguientes errores:

1>------ Rebuild All started: Project: Test05, Configuration: Debug Win32 ------ 
1> Test05.cpp 
1>Test05.obj : error LNK2019: unresolved external symbol @[email protected] 
referenced in function [email protected] 
1>Test05.obj : error LNK2019: unresolved external symbol __RTC_CheckEsp referenced in 
function [email protected] 
1>Test05.obj : error LNK2001: unresolved external symbol __RTC_Shutdown 
1>Test05.obj : error LNK2001: unresolved external symbol __RTC_InitBase 
1>LINK : error LNK2001: unresolved external symbol _wWinMainCRTStartup 

lo que está pasando aquí? Lo mejor que puedo decir es qué hacer con wWinMain, pero se copia directamente desde el sitio.

Los compiladores parecen ser mucho más problemáticos para mí que la programación de aprendizaje. Decidí en Visual C++ después de probar algunos otros (bloques de código en su mayoría), pero dado que Visual C++ parece tener más soporte (o al menos la mayoría de los usuarios) pensé que era mejor que nunca llegar a nada, ya que todos son tan poco intuitivos. Un principiante.

+0

¿Pudo resolverlo? –

Respuesta

0

Parece que está vinculando una versión diferente de las bibliotecas de tiempo de ejecución de lo que compila.

Asegúrese de tener solo una versión de Visual Studio instalada y en la ruta.

Si tiene más de una versión, intente cambiar el nombre temporalmente de los directorios raíz de otras instalaciones de Visual Studio para ver si esto causa algún efecto.

+0

He reinstalado VS, así como también el SDK (ahora versión 7.1) (donde obtuve el archivo para ShObjIdl.h) y recibo el siguiente error: 1> ------ Reconstruir todo iniciado: Proyecto: GennerWindowsTesting , Configuración: Depurar Win32 ------ 1> C: \ Archivos de programa (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ Platforms \ Win32 \ Microsoft.Cpp.Win32.Targets (147,5): error: falta el archivo requerido "". ========== Reconstruir todo: 0 éxito, 1 error, 0 omitido ============= – Vertro

0

Me gustaría descargar la muestra del código completo desde el enlace here en lugar de copiar y pegar ese fragmento de código al que se ha vinculado. Puede haber configuraciones importantes de compilador/enlazador en los archivos del proyecto que no se muestran allí. La muestra es una solución VS 2008, pero pude actualizarla a una solución 2010 y construirla. Sin embargo, me dio 'error fatal del enlazador: no pude encontrar' kernel32.lib '' cuando traté de compilarlo en VS 2008.

+0

No parece actuar de forma diferente cuando lo descargué que el archivo en el sitio. Los mismos errores para mí – Vertro

4

Los símbolos _RTC_xxx se agregan cuando se usan 'Verificaciones de tiempo de ejecución básicas'; para deshabilitarlos, puede ir a las propiedades del proyecto y establecer la opción Propiedades de configuración> C/C++> Todas las opciones> Verificaciones básicas de tiempo de ejecución en "Predeterminado". Sin embargo, como se menciona en las otras respuestas, parece que tiene una discrepancia en las bibliotecas de C-Runtime.

+0

Solo compartiendo: después de su sugerencia, vinculé una pequeña biblioteca a mi EXE generado desde Delphi Tokyo (32/64) y funcionó a las mil maravillas. Gracias por compartirlo tio! – silvioprog

Cuestiones relacionadas