2011-08-15 7 views
1

をデバッグするために、私はいくつかのヘッダが含まれてリファクタリングされており、突然のすべてがIこの(いくつかの名前空間とクラス名を変更)リンクエラーが残っています:事があるC++リンクエラーのGetTickCount不足しているとどのように

Error 1 error LNK2001: unresolved external symbol "public: class ABC::DEF::JKL __thiscall ABC::GHI::GetTickCount(void)const " ([email protected]@[email protected]@[email protected]@[email protected]) Server.obj 

私のコードには、GetTickCountへの参照が1つしかありません。私はいくつかのきれいな再建を行った、無駄に。

これをデバッグするにはどうすればよいですか?違反行を発見する可能性はありますか?上のメッセージから問題のアイテムがサーバーコンパイルユニットにあるかのように見えますが、それをさらに絞り込むことは可能でしょうか?なぜ私は決して参照していない未解決の外部のシンボルを得るだろうか?

おかげ

+0

何かの機能を持っている' 'ABC :: DEF :: JKL'をのGetTickCount:私は通常ラインでqmakeのからこれを行います() 'が呼び出されています。これは、必ずしもそれがあなたのクラスの1つであることを必ずしも意味しません。特に、サードパーティのライブラリを使用している場合にはそうです。正確なエラーやコードを投稿できますか? – Chad

+0

これは正確なエラーで、ABC :: DEF :: JKLは私のクラスであり、GetTickCount()関数はほとんどありません。外部ライブラリは、ブーストに制限されています。 – Cookie

答えて

3

ネヴァーマインドは、winbase.hは

#define GetCurrentTime() GetTickCount() 
+3

そうですね、Windowsのヘッダーはそんなに厄介です。これまでマクロの悪用。 –

+0

@Cookie:だから解決策は何ですか? 'GetCurrentTime()'関数の名前を変更する必要がありましたか? – User

+0

@ユーザー:はい本当に、私はそれを改名した。あるいは、定義されていないウィンドウの定義を持つこともできます。 – Cookie

0

するようにいいです、これはあなたのコードのリリースビルドであるように見えます。デバッグモードで再ビルドしてください。リンカーは未解決の外部の正確な行番号をServer.objに伝えてください。

0

私はあなたがWindows上に構築していると仮定しています。GetTickCount() is a function provided from Kernel32 libraryです。

リンカーライブラリの行にKernel32.libを追加する必要があります。 `server.obj`がクラスにリンクされたファイルは、作成から呼び出されている

LIBS *= Kernel32.lib 
関連する問題