我有一個C程序,它使用與可執行文件位於同一目錄中的一些資源。當我從隨機工作目錄(不是程序所在的目錄)執行程序時,資源不會加載,因爲我在代碼中使用的相對路徑不是可執行文件的路徑。我怎樣才能解決這個很好?C中的相對路徑
Q
C中的相對路徑
2
A
回答
3
傳遞一個包含資源的程序作爲參數,無論是目錄的路徑:
- 變化進程的當前目錄的目錄(
chdir()
在Unix和SetCurrentDirectory()
在Windows上),或 - 結構絕對路徑的資源
如果是Windows,關於這一問題的sugges評論您可以使用GetModuleFileName()
獲得exe
的路徑,從中提取目錄並避免必須爲程序提供參數。然後列出的兩個選項中的任何一個都將允許程序從任何地方執行並仍然定位它的資源。
0
對於任何人在未來已在此老問題發生,我只是做了:
程序(至少在Linux上)保持它被稱爲通過爲int main
參數列表中的第一個參數的命令。
例如 在這個例子中,我們將鑽取幾個目錄以獲得我們的程序,導致以下調用命令[email protected]:~$ ./foo/bar/awesome_program.x86_64
。
程序(以下代碼)將打印./foo/bar/awesome_program.x86_64
。
由於我們將該字符串作爲變量,因此從它構造相對路徑應該相當簡單,只需用相對於可執行文件的路徑替換該字符串的結尾即可。
工作代碼:
#include <stdio.h>
int main (int argc, char **argv)
{
printf("calling path: %s\n", argv[0]);
return 0;
}
相關問題
- 1. C中的相對路徑#
- 2. c#相對路徑
- 3. C#Uri AppDomain.CurrentDomain.BaseDirectory相對路徑
- 4. Visual Studio C++相對路徑
- 5. 硬編碼C中的相對路徑#
- 6. 將相對路徑轉換爲svg中的相對路徑
- 7. 相對路徑
- 8. 相對路徑
- 9. 相對路徑
- 10. 相對路徑
- 11. 相對路徑
- 12. 相對路徑
- 13. 相對路徑
- 14. server.mappath中的相對路徑
- 15. codeigniter中的相對路徑
- 16. Context.xml中的相對路徑
- 17. PHP中的相對路徑?
- 18. VB.Net中的相對路徑
- 19. scrapyd中的相對路徑
- 20. Eclipse中的相對路徑
- 21. Python中的相對路徑
- 22. Silverlight中的相對路徑
- 23. Java中的相對路徑
- 24. QtCreator中的相對路徑
- 25. .NET中的相對路徑
- 26. C++的#include的相對路徑
- 27. 轉換爲相對路徑C#絕對路徑
- 28. 將相對路徑轉換爲絕對路徑C#
- 29. 從相對路徑c獲取絕對路徑#
- 30. 如何將相對路徑轉換爲絕對路徑在C#
好,使用絕對路徑? –
@KingsIndian:他怎麼知道可執行文件最終會在哪裏? Rsources是相對於exe文件夾,不是? –
那麼,那肯定是一個答案,但然後用戶不能改變到程序的目錄,除非我用某種Windows API函數硬編碼所有路徑來檢索實際的絕對路徑... – Jori