我想使用「GetProcessImageFileName」檢索遠程進程的名稱。然而,海灣合作委員會(MinGW的)連接失敗,出現以下錯誤(S):GCC(MinGW)鏈接器嘗試使用GetProcessImageFileName時失敗
<source_file>.c: In function '<function_name>':
warning: implicit declaration of function 'GetProcessImageFileName' [-Wimplicit-function-declaration]
GetProcessImageFileName(hProcess, szProcessName, MAX_PATH);
^
undefined reference to `GetProcessImageFileName'
collect2.exe: error: ld returned 1 exit status
我試過用「-lPsapi」和「-lKernel32」編譯,但我得到了相同的結果。 「GetProcessImageFileName」在「Psapi.h」中聲明。
我使用的是Windows 7 Professional 64位和GCC 4.8.1的機器。任何想法發生了什麼?
我能想到的唯一的事情,實際上並沒有嘗試任何,爲你傳遞一個「窄」串入函數的Unicode版本。你是否定義了'UNICODE',什麼是'szProcessName'類型?我猜「是」和'char *'或'std :: string'。有些來源會很好。 – icabod 2014-11-06 10:57:10
警告來自編譯器,而不是鏈接器,這意味着'GetProcessImageFileName'尚未被聲明。所以你需要包含正確的標題。如果該函數不在標題中,則可能需要更新版本的mingw,否則mingw本身可能需要更新。 – arx 2014-11-06 11:57:14
@arx Vanilla MinGW在XP中幾乎沒有什麼新東西,比如'GetProcessImageFileName()'。如果這是XerZetZip正在使用的,他將需要切換到mingw-w64。很遺憾,我們今天仍然對使用錯誤的MinGW的人有這個問題... – andlabs 2014-11-06 14:45:13