2017-01-04 22 views
0

C++プロジェクトをコンパイルしようとしているときに、CLSID_PropertyChangeArrayの定義に関連するエラーがありました。これはlisted on MSDNです。 Propsys.hの必要なヘッダーファイルをインポートしましたが、問題は残ります。次のようなメッセージが引き続き表示されます。未定義CLSID_PropertyChangeArray

propsys.obj : error LNK2001: unresolved external symbol CLSID_PropertyChangeArray 


propsys.cpp(610): error C2065: 'CLSID_PropertyChangeArray': undeclared identifier 

私はこれを間違っていますか?私はwin32のC + +に精通していないので、これは初心者の間違いですか?

+2

ためCoCreateInstanceを呼ぶ試み。最初はコンパイラエラー、2番目はリンカエラーです。あなたは2番目のことを経験しています。 'CLSID'は複数の整数を含む' struct'です。 '.h'ファイルは' CLSID_PropertyChangeArray'変数(extern const CLSID CLSID_PropertyChangeArray;)の 'extern'ステートメントを宣言しますが、実際の' CLSID_PropertyChangeArray'を定義する '.lib'ファイルをプロジェクトに追加する必要がありますそれ以外の場合は、コード内で直接定義することができます(つまり、 'const CLSID CLSID_PropertyChangeArray = {...};')。そうすれば、リンカーはそれを見つけることができます。 –

答えて

0

本当にこれはドキュメントのバグです。 CLSID_PropertyChangeArrayまたはPropertyChangeArrayは、SDKまたはWDKヘッダーには定義されていません。ここでは、シンボルCLSID_PropertyChangeArray{8b6a3ebb-cd13-4704-93c5-bc3413104e4c})の存在が、この関数はそれでCoCreateInstanceを呼び出すが、内部実装を使用していない - PSCreatePropertyChangeArrayのための高速な外観が1つのしかない場合の方法IPropertyChangeArrayインターフェースコールPSCreatePropertyChangeArray


を取得します。また、このクラスにも登録されていない - そう* *未定義と*未解決の*記号の間には大きな違いがあり{8b6a3ebb-cd13-4704-93c5-bc3413104e4c}リターンREGDB_E_CLASSNOTREGエラー

enter image description here

+0

@xaav - もしあなたが*未定義*シンボルを持っていれば、 'SDK'(または' WDK'、 'VC')*インクルードディレクトリ*のファイルマネージャで最適な解決策を探します。このシンボルが正しく定義されていれば、 '.h'が置かれた場所が見つかりました。この' .h'ファイルを含める必要があります。あなたが*未解決の*シンボルを持っているならば、* LIB *のフォルダでも今度は検索をします。これは、このシンボルがエクスポートされた場所(エクスポートされなければならない場合)と、 '.lib 'が* linker *の入力として必要とするところからです。単純に十分な規則だが非常に役立つ – RbMm