如何使用运行时结构获取exe路径?

时间:2013-08-22 01:34:03

标签: d dmd

在win7下,运行时(模块)从不给我任何东西。我希望第一个参数始终是exe路径,但它总是空的。

3 个答案:

答案 0 :(得分:1)

如果只是获取当前路径,std.file.getcwd()会为您提供当前目录。

答案 1 :(得分:1)

我可以确认运行时在使用WinMain函数时返回空值(即使在调用Runtime.initialize之后)。

如果编译器找到rt_args函数,也许Druntime应该尝试调用WinAPI函数来填充rt_cArgs / WinMain成员。通常,可以使用GetCommandLineCommandLineToArgvW来提取参数。可能应该向bugzilla提交一个错误。

至于当前流程的实际路径,有一个开放的pull request应该会进入下一个2.064版本。

答案 2 :(得分:0)

C:\work\so> dmd bbasile01.d

C:\work\so> bbasile01.exe
C:\work\so\bbasile01.exe

C:\work\so> type bbasile01.d
import std.stdio;

int main(string[] args) {
  writeln(args[0]);
  return 0;
} // main() function

编写一个提供运行进程路径的函数的跨平台实现并不是一项简单的任务......过去在数百个(非D相关)线程中的StackOverflow中讨论过它。