win32.hで宣言され、User32.dllで定義された2つのメソッドGetMonitorInfoとWindowFromMonitorを使用するオブジェクトファイルをリンクしようとしています。ソースがオブジェクトファイルにうまくコンパイルが、私はリンクしようとすると、私は次のエラー出力を得る:User32.dllへのリンク時のリンクエラー2001
D3dCtx.obj : error LNK2001: unresolved external symbol xGetMonitorInfo
D3dCtx.obj : error LNK2001: unresolved external symbol xMonitorFromWindow
事は、私が「xGetMonitorInfo」または「xMonitorFromWindow」を呼び出すことはありません、です。すべてのソースファイルでgrepを実行すると、「GetMonitorInfo」と「WindowFromMonitor」だけが呼び出されていることがわかります。私は適切にwin.hを含むwindows.hを含んでいます。リンカオプションでLIBPATHを適切に設定していますが、これは冗長なリンク出力によって確認されます。
次のようにも私の冗長リンク出力に表示されます:私は「へ "GetMonitorInfo" へのすべての参照を変更する場合
WINUSERAPI
BOOL
WINAPI
GetMonitorInfoA(
__in HMONITOR hMonitor,
__inout LPMONITORINFO lpmi);
WINUSERAPI
BOOL
WINAPI
GetMonitorInfoW(
__in HMONITOR hMonitor,
__inout LPMONITORINFO lpmi);
#ifdef UNICODE
#define GetMonitorInfo GetMonitorInfoW
#else
#define GetMonitorInfo GetMonitorInfoA
#endif // !UNICODE
:
Found __imp_GetMonitorInfoA
Referenced in nafxcw.lib(afxribboncategory.obj)
Referenced in nafxcw.lib(afxtooltipctrl.obj)
Referenced in nafxcw.lib(afxribbonkeytip.obj)
Referenced in nafxcw.lib(afxfullscreenimpl.obj)
Referenced in nafxcw.lib(afxframeimpl.obj)
Referenced in nafxcw.lib(afxglobalutils.obj)
Referenced in nafxcw.lib(afxdropdowntoolbar.obj)
Referenced in nafxcw.lib(wincore.obj)
Referenced in nafxcw.lib(afxglobals.obj)
Referenced in nafxcw.lib(afxpopupmenu.obj)
Referenced in nafxcw.lib(afxpropertygridtooltipctrl.obj)
Loaded User32.lib(USER32.dll)
Found __imp_MonitorFromWindow
Referenced in nafxcw.lib(wincore.obj)
Loaded User32.lib(USER32.dll)
さらに、GetMonitorInfoは次のようにWINUSER.Hに定義されていますGetMonitorInfoA "、取得のみ
D3dCtx.obj:エラーLNK2001:未解決の外部シンボルxMonitorFromWindow
として私のリンカエラー出力。残念ながら、MonitorFromWindowは複数のバージョンを利用できないようです。
私は64ビットバージョンのライブラリ、リンク、およびclを使用していることに注意してください。
ここでは何が起こっていますか、プログラムを正常にリンクするにはどうすればよいですか?
マクロトラブルのようなクエックス。 Grep for x ## –
これを引き起こしていたマクロが見つかりませんでした。これらの関数を参照するファイルは1つのみです。しかし、あなたのコメントは、マクロを使って問題を回避するように私にインスピレーションを与えました。それは最善の解決策ではありません(そして私は少し傷つきます)が、このコードは実際にはコンパイルする必要があり、維持する必要はありません。 –