[英]Cross-platform alternative to this realpath definition?
因此,最近有人向我的项目提交了一些错误修复,他们还包括以下内容:
#ifdef _MSC_VER
#ifndef PATH_MAX
#define PATH_MAX _MAX_PATH
#endif
#define realpath(N,R) _fullpath((R),(N),_MAX_PATH)
#endif
问题是我在 MinGW 中使用 Code::Blocks,所以当我尝试编译时,它说 realpath() 根本没有定义。 提交者没有提供任何替代方案,当我尝试在没有 MSVC 的情况下搜索 realpath 时,我得到的只是将 realpath与MSVC 一起使用。 有没有人有我可以与 MinGW 一起使用的东西?
realpath()
是一个 POSIX 函数,这就是 MinGW 找不到它的原因。 您可以做的是使用 boost::filesystem 库作为跨平台的替代方法来查找绝对路径。 boost::filesystem 的教程如下:
http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v2/doc/index.htm#tutorial
boost::filesystem 库已经存在一些问题。 下面附上了一个可能有用的链接:
我发现对#ifdef
条件的以下调整有效:
/* Create a realpath replacement macro for when compiling under mingw
* Based upon https://stackoverflow.com/questions/45124869/cross-platform-alternative-to-this-realpath-definition
*/
#ifdef WIN32
#define realpath(N,R) _fullpath((R),(N),PATH_MAX)
#endif
在这两种情况下,生成的可执行文件都在 Windows 10 上运行。测试使用:
i686-w64-mingw32-gcc
7.3-win32 交叉编译器,在 Linux 上运行,可以生成 32 位 Windows 可执行文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.