2016-05-16 24 views
0

有什麼方法可以知道程序最初在C中產生的目錄?我希望我的程序知道它在計算機中的位置。我已經嘗試在direct.h中使用_getcwd()。我也試過getcwd()使用unistd.h。但這是問題。如果我將PATH添加到我的程序目錄中,則函數_getcwd()getcwd()路徑將返回我調用該程序的路徑。所以如果我用dekstop運行程序,它將返回桌面的路徑。我已經嘗試使用this方法,但它不能解決問題。它返回調用路徑的值。我想知道用什麼函數來知道程序的路徑,而不是程序被調用的路徑。 我應該使用什麼功能?獲取程序調用的原始位置

+0

早些時候已經嘗試過這些方法。它返回被調用的路徑,而不是被調用的程序的原始路徑。 –

回答

0

當前的工作目錄是沒有用的。在文件系統中的可執行映像的位置與當前工作目錄之間沒有聯繫,而不是巧合。

你可以通過調用_get_wpgmptr(一個Microsoft特定的擴展,隨Visual Studio中的CRT)或GetModuleFileName(通過NULLHMODULE)檢索到可執行文件完全合格的路徑,並通過調用PathRemoveFileSpec解壓路徑(或者Windows 8及更高版本的PathCchRemoveFileSpec)。

+0

我正在使用Windows 7.'_get_wpgmptr()'出現在什麼庫?已經包含'stdlib.h'和'windows.h',但編譯器說:''_get_wpgmptr''的未定義引用。 –

+1

@BryanJames:'_get_wpgmptr()'是Visual Studio的CRT實現的一部分,因此您需要'#include **和**使用Visual Studio(或Microsoft Compiler)。如果您使用的是不同的編譯器,則可以使用Windows API調用「GetModuleFileName」。 – IInspectable

相關問題