2012-04-14 41 views
5

Visual Studio Express 2010を使用して、Windowsアプリケーションを作成し、Windowsアプリケーションと空プロジェクトのオプションを用意しました。私は次のエラーを得たWindowsプログラミングチュートリアルで未解決の外部シンボル__RTC_ *

#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; 
} 

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 

はここで何が起こっている私は、MSDNのWindowsのチュートリアルからfollowing code snippetを試してみましたか?最高私はwWinMainと何かを話すことができますが、それはサイトから直接コピーされます。

コンパイラはプログラミング学習よりもずっと面倒なようです。私はいくつかの他のコードブロックを試した後でVisual C++を決定しましたが、Visual C++はほとんどのサポート(またはユーザーの大多数)を占めているように見えました。初心者です。

+0

解決できましたか? –

答えて

0

あなたは、あなたがコンパイルしているものとは異なるランタイムライブラリのバージョンをもう一度リンクしているようです。

Visual Studioがインストールされているパスが1つだけであることを確認してください。

複数のバージョンを使用している場合は、他のVisual Studioインストールのルートディレクトリの名前を一時的に変更して、影響があるかどうかを確認してください。

+0

私はShObjIdl.hのファイルを入手したところで、VSとSDK(今バージョン7.1)を再インストールしました。次のエラーが発生しています: 1 ------ Rebuild all started:Project:GenericWindowsTesting構成:デバッグWin32 ------ 1> C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ Platforms \ Win32 \ Microsoft.Cpp.Win32.Targets(147,5):エラー:必須ファイル ""がありません。 ==========すべて再構築:0成功、1失敗、0スキップ========== – Vertro

0

リンク先のコードスニペットをコピーして貼り付けるのではなく、hereリンクから完全なコードサンプルをダウンロードします。そこに表示されていないプロジェクトファイルには、重要なコンパイラ/リンカー設定が存在することがあります。このサンプルはVS 2008ソリューションですが、2010年のソリューションにアップグレードしてビルドすることができました。しかし、それは私に致命的なリンカーエラーをもたらしました.VS 2008でビルドしようとしたときに 'kernel32.lib'が見つかりませんでした。

+0

ファイルをダウンロードしたときとは異なる動作をしているようには見えませんサイト。私と同じエラー。 – Vertro

4

「基本ランタイムチェック」を使用すると_RTC_xxxシンボルが追加されます。それらを無効にするには、プロジェクトのプロパティに進み、[設定プロパティ]> [C/C++]> [すべてのオプション]> [基本ランタイムチェック]オプションを[デフォルト]に設定します。しかし、他の答えで述べたように、あなたはCランタイムライブラリに不一致があるように見えます。

+0

ちょうど共有:あなたのヒントの後、Delphi Tokyo(32/64)から生成されたEXEに小さなライブラリをリンクして、魅力的に機能しました。それを共有してくれてありがとう! – silvioprog