C語言_地址路徑
最近在寫程式的時候,遇到了相對路徑找不到檔案的問題。找了好長時間才找到了解決的辦法,現在將出現的原因及解決方法介紹如下:
出現的原因:
我這個工程出現的原因是因為在呼叫DLL和exe檔案之前,打開了圖片資料夾遍歷資料夾 中的圖片,Dll及exe都會定位在當前圖片所在的檔案目錄中,所以呼叫相對路徑就找不到位置檔案,哎,這個問題定位了好幾天,終於明朗了。
幾種解決方法:
1.在開啟檔案之前,獲取當前路徑,並把路徑通過引數傳入到dll或exe中,這樣通過絕對路徑的方法進行呼叫可以解決;
程式碼:
#include<windows.h>
char pFileDir[255];
GetCurrentDirectory(255,pFileDir); //獲取當前路徑
2.exe是別人寫的,介面不好做,通過定位當前路徑為當前工作路徑進行解決。
#include<windows.h>
#include<string.h>
using namespace std;
char pFileDir[255];
string a;
GetModuleFileName(NULL,pFileDir,255); //獲取當前工程檔案.exe的路徑(包含.exe)
(_tcsrchr(pFileDir,_T('\\')))[1]=0; //刪除檔名,只獲得路徑字串
a.append("//..//"); //上一層路徑
SetCurrentDirectory(a,c_str()); //設定工作路徑
GetCurrentDirectory(254,pFileDir); //再看一下目前的工作路徑
ShellExecute(NULL,_T("open"),_T("**.exe"),NULL,NULL,SW_SHOWNORMAL);
相對路徑:
..\\ 當前路徑上一層
.\\ 當前路徑