最近在写程序的时候,遇到了相对路径找不到文件的问题。找了好长时间才找到了解决的办法,现在将出现的原因及解决方法介绍如下:
出现的原因:
我这个工程出现的原因是因为在调用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);
相对路径:
..\\ 当前路径上一层
.\\ 当前路径