1. 程式人生 > >C語言_地址路徑

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);

    相對路徑:

                  ..\\        當前路徑上一層

                   .\\         當前路徑