这个问题是关于跨平台实现realpath定义的替代方案。

6

最近有人向我的项目提交了一些错误修复,他们还包含了这个:

#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 with MSVC。是否有人可以提供我可以与MinGW一起使用的东西?

2个回答

2

谢谢!我会尝试一下。 - Kelvin Shadewing
@KelvinShadewing 如果您发现这个回答有用,请接受它吗? - James Balajan

1
我发现在#ifdef条件中进行以下调整可以解决问题:
/* Create a realpath replacement macro for when compiling under mingw
 * Based upon https://dev59.com/eKPia4cB1Zd3GeqPy3eh
 */
#ifdef WIN32
    #define realpath(N,R) _fullpath((R),(N),PATH_MAX)
#endif

两种情况下都在 Windows 10 上运行生成的可执行文件。 使用以下进行测试:

  • 由 MATLAB 2021a 打包的 MinGW64 本地 Windows mex 编译器。
  • 可在 Linux 上运行并能够生成 32 位 Windows 可执行文件的 i686-w64-mingw32-gcc 7.3-win32 交叉编译器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接