0

CPU時間を測定しようとしています。Win 32ではうまく機能しますが、64ビットでは次のようになります。

error LNK2019: unresolved external symbol __imp_GetProcessTimes referenced in function "unsigned int __cdecl getWINTime(void)" (?getWIN32Time@@YAIXZ) 

同様のエラーがありますFileTimeToSystemTime

error LNK2019: unresolved external symbol __imp_FileTimeToSystemTime referenced in function "unsigned int __cdecl getWINTime(void)" (?getWIN32Time@@YAIXZ)

機能自体はそれほど重要ではなく、問題はありません。
これは64ビットアーキテクチャで合法と呼ばれていますか?

64ビットウィンドウのライブラリに正しくリンクされていないように見える問題はこれだけではありません。
正しくリンクするために設定する必要のある設定はありますか?

4

3 に答える 3

2

2つの環境のビルド設定には、同じインポートライブラリがリストされていますか。これらの関数は両方ともkernel32.dllにあります。

于 2010-06-18T17:09:02.150 に答える
1

リンカフラグを確認してください。64ビットビルドのプロジェクト全体の構成は、32ビットビルドのプロジェクト構成とは異なります。したがって、プロジェクト設定をチェックして、両方が同じライブラリにリンクしていることを確認します。

また、プロジェクト設定のコマンドラインペインを確認するか、ビルドログを調べて、コンパイラとリンカが正しく呼び出されたことを確認します。

Visual Studio 2010でこのコードの64ビットビルドを作成しようとしましたが、正常に機能しました。

#include <Windows.h>

int CALLBACK WinMain(
  __in  HINSTANCE hInstance,
  __in  HINSTANCE hPrevInstance,
  __in  LPSTR lpCmdLine,
  __in  int nCmdShow
) {
  FILETIME ct;
  FILETIME et;
  FILETIME kt;
  FILETIME ut;
  GetProcessTimes(NULL, &ct, &et, &kt, &ut);

  SYSTEMTIME st;
  FileTimeToSystemTime(&ut, &st);

}

新しいWin32プロジェクトを作成し、64ビットプラットフォームを追加して、コンパイルしただけです。プロジェクトの設定はまったく変更しませんでした。

于 2010-06-22T10:56:23.067 に答える
0

GetProcessTimesとFileTimeToSystemTimeのドキュメントには、含めるヘッダーと、リンクするライブラリファイルが記載されています。ただし、Visual Studioは通常、それらを自動的にリンクします。おそらくプロジェクトでチェックされているデフォルトのライブラリを無視しましたか?

于 2010-06-24T20:38:29.047 に答える