我对c/c ++场景很陌生,我已经在虚拟机上用勺子喂了太长时间.
我正在修改我们在整个公司使用的现有C++工具.该工具正在所有主要操作系统(Windows,Mac,Ubuntu,Solaris等)上使用.我正在尝试使用另一个编写Java的工具来桥接该工具.基本上我只需要从C++工具中调用java -jar.
问题是,我怎么知道jar在用户计算机上的位置?c ++可执行文件当前被检入Perforce,用户同步然后调用exe,可能会将exe留在原位(尽管他们可以将其复制到其他地方).我当前的解决方案检查exe旁边的jar文件.
我已经看过多种方法来计算来自C++的exe的位置,但它们似乎都不是可移植的.在Windows上有一个'GetModuleLocation',在posix上你可以查看procs/process.exe信息来确定进程的位置.在大多数系统中,您可以查看argv [0]以确定exe的位置.但是由于用户使用$ PATH,符号链接等来调用exe,因此大多数这些技术都是100%保证的.
那么,任何关于正确的方法的指导总能奏效吗?我想如果有多个解决方案我没有问题,但似乎应该有更优雅的方式来做到这一点.
我不相信有这样做的便携方式.C++标准本身没有定义任何有关执行环境的内容.您获得的最好的是std::system调用,并且对于路径名中的Unicode字符这样的事情可能会失败.
这里的问题是C和C++都用在没有操作系统之类的系统上.没有这样的事情$PATH.因此,标准委员会要求符合要求的实施提供这样的特征是没有意义的.
我只想为POSIX编写一个实现,一个用于Mac(如果它与POSIX显着不同...从未使用它,所以我不确定),一个用于Windows(在编译时使用预处理器选择哪一个) .它可能是每个函数调用3个; 不是很多代码,你肯定会遵循目标平台的惯例.
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |