C++里面使用GetModuleFileName获取路径时,路径多了一个点

如上路,我在程序里使用GetModuleFileName这个函数获取了路径的字符串,然后输出,在项目名“2014-01-02”和“Debug”中间不知道为什么多了一个点可... 如上路,我在程序里使用GetModuleFileName这个函数获取了路径的字符串,然后输出,在项目名“2014-01-02”和“Debug”中间不知道为什么多了一个点
可是我的文件目录明明是这样子的

我寻找了一下这个“.”文件夹,可是没有这个文件夹

求问是什么问题,能怎么样解决?
对了,我用的是VS2010,用MFC框架写的程序
展开
 我来答
ahcc08
推荐于2017-09-06 · 知道合伙人软件行家
ahcc08
知道合伙人软件行家
采纳数:11853 获赞数:51939
拥有丰富的软件开发经验。

向TA提问 私信TA
展开全部
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

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七妹很乖
2017-09-06
知道答主
回答量:1
采纳率:0%
帮助的人:954
展开全部
有时候vs201出现bug不能识别".",所以这时候你将配置属性-》常规-》输出目录“.\debug”改为$(SolutionDir)$(Configuration)\就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sephil
2014-04-18 · 知道合伙人IT服务行家
Sephil
知道合伙人IT服务行家
采纳数:616 获赞数:1036
熟悉常用语言和数据库,爱写代码

向TA提问 私信TA
展开全部
.代表当前目录,其实2个结果是一个意思
更多追问追答
追问
可是我需要通过GetModuleFileName获取的绝对路径来打开项目目录下的一个BMP文件(通过CreateProcess),可是因为获取的路径字符串中间多了“\\.”这个点,于是CreateProcess就识别不了了,我试着将那个点删除之后,CreateProcess才成功识别了路径打开了我需要的文件,所以我需要知道它为什么会多了一个点。
追答
相对路径不能用..\\啊,那是上级目录,应该用.\\吧,或者干脆省略也行。
为什么出现.我也不清楚,我这么多年也没碰到过这种问题,可能是因为exe或dll被调用时的参数问题,要看具体情况才能确定。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式