3

これは私を完全に狂わせています。プログラムをコンパイルすると、次のエラー メッセージが表示されます。

エラー LNK2019: 未解決の外部シンボル _D3D11CreateDeviceAndSwapChain@48

私は正しい lib / と include ディレクトリ (x86) をすべて持っていることを知っており、定義 (F12) に移動すると DirectXSDK インストール ディレクトリ用の 2 つのシンボルを取得するという事実まで問題を追跡しました。もう 1 つは "c:\Program Files (x86)\Windows Kits\8.0\Include\um" にあります。

私の人生では、何をすべきかわかりません。包含/除外ディレクトリをすべて調べましたが、解決できず、何をすべきかわかりません。誰でも私を助けることができますか?

4

3 に答える 3

11

私は自分でこのエラーに遭遇し、Luke のコメントでの提案で解決しました。

Visual Studio を使用していると仮定して、プロジェクトのプロパティ ウィンドウを開き、[リンカー] -> [入力] に移動します。「追加の依存関係」の下に を追加d3d11.libし、リンクを再試行します。

于 2013-08-06T20:09:47.443 に答える
7

わかった。気が狂ったように運転する前に、次のことを確認してください。

  • あなたのアプリと同じアーキテクチャに対してリンクしています: x86, x64, arm (それは一般的な落とし穴です =) )

    C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86

    C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64

    C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\arm

  • ヘッダーと同じ sdk から lib をリンクします (ソースで、パスを明示的に入力してみてください)。

    #include "c:\Program Files (x86)\Windows Kits\8.0\Include\um\header.h"

    #pragma comment(lib, "C:\\Program Files (x86)\\Windows Kits\\8.0\\Lib\\win8\\um\\x64\\library.lib")

  • ライブラリ自体が正常であること (存在し、破損していないこと) を確認します。古い DXSDK と Win8SDK をアンインストールし、そのうちの 1 つだけを再インストールして、別のものよりも試してみてください。(また、古い SDK からどこかにドキュメントとチュートリアルをコピーし、アンインストールして、まったく忘れることをお勧めします)

  • verbose フラグを指定してnew #pragma linker(not ) を試して、リンカー出力を取得します。#pragma lib

    #define USE_OLD_DXSDK

    #ifdef USE_OLD_DXSDK

    #pragma comment(linker "c:\\path\\to\\old_sdk\\d3d11.lib -verbose")

    #else

    #pragma comment(linker, "c:\\path\\to\\new_sdk\\d3d11.lib -verbose")

    #endif

  • 別の方法: 新しい小さなアプリを作成し、D3D11CreateDeviceAndSwapChainゼロから何かを作成してみてください。今必要なものだけ#includeで、他には何もありません。linkリンカー エラーを再現して、エラーが発生する理由を理解し、メイン アプリで修正する方法を見つけてください。

ハッピーコーディング!

于 2013-04-24T06:29:39.657 に答える