1

私はサードパーティのライブラリを持っています。(msvc10) MT/MD (静的 cfg) および動的 DLL cfg。
私はqt + msvc10 express + win sdk.7を持っています

わかりました、提供されている既存の例を使用します (ライブラリを使用して) コンパイルできません ..... 同じライブラリの未解決の外部エラーが 4 つあります。(しかし、他のものについてはエラーはありません) 私はこれらのライブラリをサポートしていません...... (しかし、それらは合法であり、私は権利のないメンバーです)

可能な修正を調査する手順はどれですか? どこを見ればいいですか?ありがとう。

編集1:

エラーは次のとおりです。

TD_ExamplesCommon.lib(ExHostAppServices.obj) : error LNK2019: unresolved external symbol __imp__RegEnumValueW@32 referenced in function "public: virtual bool __thiscall ExHostAppServices::ttfFileNameByDescriptor(class OdTtfDescriptor const &,class OdString &)" (?ttfFileNameByDescriptor@ExHostAppServices@@UAE_N ABVOdTtfDescriptor@@AAVOdString@@@Z)
TD_ExamplesCommon.lib(ExHostAppServices.obj) : error LNK2019: unresolved external symbol __imp__RegCloseKey@4 referenced in function "public: virtual bool __thiscall ExHostAppServices::ttfFileNameByDescriptor(class OdTtfDescriptor const &,class OdString &)" (?ttfFileNameByDescriptor@ExHostAppServices@@UAE_N ABVOdTtfDescriptor@@AAVOdString@@@Z)
TD_ExamplesCommon.lib(ExHostAppServices.obj) : error LNK2019: unresolved external symbol __imp__RegQueryValueExW@24 referenced in function "public: virtual bool __thiscall ExHostAppServices::ttfFileNameByDescriptor(class OdTtfDescriptor const &,class OdString &)" (?ttfFileNameByDescriptor@ExHostAppServices@@UAE_N ABVOdTtfDescriptor@@AAVOdString@@@Z)
TD_ExamplesCommon.lib(ExHostAppServices.obj) : error LNK2019: unresolved external symbol __imp__RegOpenKeyExW@20 referenced in function "public: virtual bool __thiscall ExHostAppServices::ttfFileNameByDescriptor(class OdTtfDescriptor const &,class OdString &)" (?ttfFileNameByDescriptor@ExHostAppServices@@UAE_N ABVOdTtfDescriptor@@AAVOdString@@@Z)
..\exe\OdaQtApp.exe : fatal error LNK1120: 13 unresolved externals

この投稿中に解決策を受け取りました: Advapi32.lib とリンクする必要があります... 私の質問は: どうすればこれを知ることができますか?
私はdependencyywalkerを試しましたが、.libを使用することはできません....

4

3 に答える 3

11

この投稿中に解決策を受け取りました: Advapi32.lib とリンクする必要があります... 私の質問は: どうすればこれを知ることができますか?

リンカから「未解決の外部」エラーが発生した場合、それは、一部のオブジェクト ファイルが必要とする関数または変数名の一致を探していて、リンカがオブジェクト ファイルの 1 つで定義されたその名前を見つけることができなかったことを意味します。ライブラリ。

これらのエラーの最初のものを確認することから始めます (少し読みやすくするために少し再フォーマットしました。次にこれらのエラーに遭遇したときに同じことを行うことをお勧めします)。

TD_ExamplesCommon.lib(ExHostAppServices.obj) : error LNK2019: unresolved external symbol
      __imp__RegEnumValueW@32 referenced in function 
      "public: virtual bool __thiscall ExHostAppServices::ttfFileNameByDescriptor(
            class OdTtfDescriptor const &,class OdString &)"
      (?ttfFileNameByDescriptor@ExHostAppServices@@UAE_N ABVOdTtfDescriptor@@AAVOdString@@@Z)

そのエラー メッセージには多くの情報が含まれています (その多くはゴミのように見えるかもしれません)。幸いなことに、ほとんどの場合、その多くは無視できます。最も重要な項目は、リンカがシンボルを探しているということ__imp__RegEnumValueW@32です。名前には多少のくしゃみがありますが、幸いなことに、いずれにせよかなり認識しやすいものです。

  • プレフィックスは、__imp__DLL インポートを探していることを示します。ほとんどすべての場合、目的のために無視できます。
  • @32サフィックスは、Microsoft コンパイラが特定の呼び出し規約の関数名に追加するものです。また、一般に、目的にとっては重要ではありません (レコードの場合、関数が 32 バイトの引数データを想定していることを示しています)。

したがって、リンカーが探しているという事実が残りますRegEnumValueW。これは、Win32 API の名前によく似ています。

RegEnumValueW(またはRegEnumValue、多くの Win32 API にはANSI/UNICODE ビルドを処理するためのAと の両方のバリアントがあるため) のドキュメントを見ると、W次の情報がドキュメントに記載されています。

    Requirements

    Minimum supported client        Windows 2000 Professional
    Minimum supported server        Windows 2000 Server
    Header                          Winreg.h (include Windows.h)
 >> Library                         Advapi32.lib
    DLL                             Advapi32.dll
    Unicode and ANSI names          RegEnumValueW (Unicode) and 
                                    RegEnumValueA (ANSI)

それがあなたが必要であることを知る方法ですadvapi32.lib

したがって、将来、リンカーから「未解決の外部」エラーが発生した場合は、エラーメッセージのほとんどのガンクを無視して、見つからないというシンボルに集中してください-ライブラリ、オブジェクトにつながるはずです不足している可能性のあるファイルまたはその他のアイテム。

記録のためだけに、advapi32.lib複雑さを問わずほとんどの Windows アプリケーションで必要になります。

于 2012-03-27T19:55:55.997 に答える
0

dll の依存関係のリストを表示し、不足しているものを確認するには、dependencywalkerを使用してみてください。

于 2012-03-27T09:10:23.020 に答える
0

リンカー オプションに *.lib ファイルを入力しましたか? (入力 --> 追加の依存関係")、さらにライブラリ ディレクトリ オプションの .lib へのパス?

于 2012-03-27T09:26:08.780 に答える