C++里面使用GetModuleFileName获取路径时,路径多了一个点
如上路,我在程序里使用GetModuleFileName这个函数获取了路径的字符串,然后输出,在项目名“2014-01-02”和“Debug”中间不知道为什么多了一个点可...
如上路,我在程序里使用GetModuleFileName这个函数获取了路径的字符串,然后输出,在项目名“2014-01-02”和“Debug”中间不知道为什么多了一个点
可是我的文件目录明明是这样子的
我寻找了一下这个“.”文件夹,可是没有这个文件夹
求问是什么问题,能怎么样解决?
对了,我用的是VS2010,用MFC框架写的程序 展开
可是我的文件目录明明是这样子的
我寻找了一下这个“.”文件夹,可是没有这个文件夹
求问是什么问题,能怎么样解决?
对了,我用的是VS2010,用MFC框架写的程序 展开
3个回答
展开全部
GetModuleFileName
获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。
你用GetModuleFileName获取不是模块的文件路径,显然是不合理的。没有人会这么干的
获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。
你用GetModuleFileName获取不是模块的文件路径,显然是不合理的。没有人会这么干的
更多追问追答
追问
没听懂你的意思。我需要通过GetModuleFileName获得当前进程的根目录,然后打开目录下的一个BMP文件,我使用CreateProcess来打开文件的,由于中间多了那个点CreateProcess识别不了这个路径,所以我需要知道为什么会出现一个点在获得的路径里,我百度到其他人都没有我这种现象
追答
CString strPath;
strPath.Empty();
char szPath[_MAX_PATH];
memset(szPath, 0, sizeof(szPath));
// 取得当前exe的路径
GetModuleFileName(NULL, szPath, sizeof(szPath));
char drive[_MAX_DRIVE], dir[_MAX_DIR], fname[_MAX_FNAME], ext[_MAX_EXT];
_splitpath_s(szPath, drive, dir, fname, ext);
strPath.Format(_T("%s%s\\%s"), drive, dir, "LSV.bmp");
工程属性字符选择多字节,不要选Unicode
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有时候vs201出现bug不能识别".",所以这时候你将配置属性-》常规-》输出目录“.\debug”改为$(SolutionDir)$(Configuration)\就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
.代表当前目录,其实2个结果是一个意思
更多追问追答
追问
可是我需要通过GetModuleFileName获取的绝对路径来打开项目目录下的一个BMP文件(通过CreateProcess),可是因为获取的路径字符串中间多了“\\.”这个点,于是CreateProcess就识别不了了,我试着将那个点删除之后,CreateProcess才成功识别了路径打开了我需要的文件,所以我需要知道它为什么会多了一个点。
追答
相对路径不能用..\\啊,那是上级目录,应该用.\\吧,或者干脆省略也行。
为什么出现.我也不清楚,我这么多年也没碰到过这种问题,可能是因为exe或dll被调用时的参数问题,要看具体情况才能确定。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询