gpt4 book ai didi

c++ - 需要帮助将 Win32 C++ 移植到 Unix

转载 作者:行者123 更新时间:2023-11-27 23:34:50 25 4
gpt4 key购买 nike

我正在寻求将此 Windows 工具移植到 Unix (Mac/OSX) 的帮助;

http://www.oxyron.de/html/netdrive01src.zip

首先我想知道,是否有人可以花点时间快速浏览一下(小的)源代码,这是否是一项相当直接的任务。

其次,任何有关移植代码的提示都将不胜感激。

我已经尝试过编译它(使用 Xcode/G++),但它会抛出 80 多个错误,其中许多错误似乎与常量有关,例如“_MAX_FNAME”,我假设它是一个系统常量,用于定义最大文件名长度。我试图查看标准 C 头文件(在我的 Mac 上),但是虽然我在 SYSLIMITS.H (NAME_MAX) 中发现了类似的常量,但我似乎仍然没有取得太大进展。

最佳答案

似乎有几种不同类别的错误:

main.cpp:8:19: error: conio.h: No such file or directory
main.cpp:61: error: ‘_kbhit’ was not declared in this scope

conio.h 是 Window 的控制台 io 头文件。 _kbhit 是其中的功能之一。

main.cpp:17: warning: deprecated conversion from string constant to ‘char*’

字符串常量在 ANSI C++ 中属于 const char * 类型。代码中还有很多奇怪的字符串函数,如果您使用 C++ std::string 而不是使用 new 的 C 字符串,这些函数将不存在。

vbinary.cpp:5:16: error: io.h: No such file or directory

vdirectory.cpp:91: error: ‘_findfirst’ was not declared in this scope
vdirectory.cpp:99: error: ‘_findnext’ was not declared in this scope
vdirectory.cpp:101: error: ‘_findclose’ was not declared in this scope
vfile.cpp:19: error: ‘_MAX_DRIVE’ was not declared in this scope
vfile.cpp:20: error: ‘_MAX_DIR’ was not declared in this scope
vfile.cpp:21: error: ‘_MAX_FNAME’ was not declared in this scope
vfile.cpp:22: error: ‘_MAX_EXT’ was not declared in this scope

io.h 是另一个 Microsoft 头文件,具有导航目录的功能和与它们一起使用的宏。请改用 dirent.h 中的函数。 VDirectory::CreatePath 等函数假设有单独的驱动器号; unix 文件系统没有,因此最好为实现使用完全独立的类,而不是尝试使用 #ifdef 将两个独立的主体放入每个函数中,并使用一个 #ifdef 来选择适合您的主。

_MAX_FNAME 等常量在 io.h 和微软的 stdlib.h 中都有。它们不在标准 stdlib.h 中,也不在它们限制输入大小的函数中。 POSIX 版本使用 NAME_MAX

关于c++ - 需要帮助将 Win32 C++ 移植到 Unix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1468078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com