2011-09-23 19 views
3

これは、あなたに莫大な量のコードを提供することなく答えが難しいことを実感します。関数内で参照されている未解決の外部シンボル

基本的に私はこのエラーをクラスXのヘッダーを含むクラスXで取得しています。で参照

未解決の外部シンボルID3D10Device * PDevice():クラスYヘッダはゲッターのための3つの定義

// Getters 
static ID3D10Device* PDevice(); 
static ID3D10Buffer* PBuffer(); 
static ID3D10Buffer* IBuffer(); 

私はすべてがそう本質的に誤差があるクラスXに発生し、3つの同一のエラーが出を有します関数(クラスXのコンストラクタ)

ごめんなさい、少し曖昧です。なぜこれが起こっているかもしれないのか?私はそれをgoogledしたが、私は本当にこのエラーが何であるかについての知識を推測することができます。

+3

これはリンカーエラーです。コンパイラーエラーではありません。 D3Dライブラリと正しくリンクしていますか? –

+0

これらの関数の定義をまったくコンパイルしていますか? – mloskot

+0

はいとはい。このコードはすべて前に動作しましたが、今は別のクラスに分割していくつかの問題があります。 – SirYakalot

答えて

5

このすべての最初には、リンカエラーです。 このリンカーエラーは、変更された名前PDevice et alが見つからないことを意味します。

定義に一致する関数の実装があることを確認できますか? また、明白かもしれませんが、実際に実装されていることを確認してください。 実装が外部のlibにある場合は、もう一方のlibをリンカーに含めてください。

希望に役立ちます!

+0

はい、ありがとうございます!問題は馬鹿のように、ClassY ::を定義の前に置かなかったということでした。 – SirYakalot

2

リンカがY.oファイル内のシンボルを見つけたように、クラスYの定義と実装を含むファイルをプロジェクトに追加していることを確認します

1

依存関係を正しく設定していることを確認してください(libファイルを追加してください)。 Visual Studioでは、のプロパティ - >リンカ - >入力 - >追加の依存関係で行うことができます。テキストボックスに.libファイルの名前を入力できるようになりました。

関連する問題