2014-03-30 33 views
3

我一直使用_pgmptr,这是Windows提供的char*,它提供了可执行文件的完整路径。但是,最近更新MinGW后,它似乎被定义为NULL。有没有其他的方式来获得完整的可执行文件路径,没有它的名字(比如C:\program.exe只是C:\对我所做的事情没问题)?_pgmptr发生了什么?

我很喜欢平台无关的方式或Windows特定的方式,只要它是可靠的。

+0

您可以使用'argv [0]'(可能需要将其复制到一个全局变量) –

+0

这就是问题所在,尽管... argv [0]可能是一些其他值,具体取决于程序如何从命令行与资源管理器。 – rsethc

+0

尽管可以在'argv [0]'中手动调用'exec'或类似的东西时完全不同),我相信它适用于资源管理器启动和命令行启动应用程序。 –

回答

3

GetModuleFileName是检索程序路径和名称的API函数。

+0

该函数的文档甚至提到'_pgmptr';尽管我不知道为什么它不可用。 – Joey

+0

是的,从该页面链接“全局变量_pgmptr被自动初始化为可执行文件的完整路径,并可用于检索可执行文件的完整路径名称。”在注释部分。 http://msdn.microsoft.com/en-us/library/tza1y5f7.aspx表示已弃用。 – rsethc