gpt4 book ai didi

c - 如何在 VC++ 2005 中定义 HAVE_STDIO_H?

转载 作者:太空宇宙 更新时间:2023-11-04 02:20:26 25 4
gpt4 key购买 nike

我刚刚使用 Visual C++ 2005 的 Express 版本构建了 SDL.dll 的更新版本,它是我的 Delphi 项目使用的开源 C DLL。我将它放在我的 EXE 文件夹中并尝试运行它,但它不会加载:

The procedure entry point SDL_RWFromFP could not be located in the dynamic
link library SDL.dll.

现在 C 从来都不是我的强项,但我在大学时对它的内存足够多,可以尝试追踪这个。我在源代码中四处寻找,看看这个函数发生了什么,我发现它是灰色的,在预处理器指令下面:

#ifdef HAVE_STDIO_H

IIRC,STDIO 是标准的 C I/O 库。我认为这意味着它不可用。任何人都知道为什么会这样以及如何解决它?这是 Visual C++ 问题还是 SDL 问题?

最佳答案

在 Unix/Linux 世界中最常见的是像 HAVE_STDIO_H 这样的名称表明该代码已被“自动没收”(这是用于描述已与“autotools”(例如“autoconf”)一起工作的状态的官方术语)。在这样的设置中,配置过程将确定是否 <stdio.h>可用并设置 #define HAVE_STDIO_H 1config.h它生成的文件。然后编译会发现平台有 <stdio.h>并会编译匹配的代码(当前显示为灰色的内容)。

适应您的 Windows 环境,信心不足 100%,因为 HAVE_STDIO_H 可能还有一些其他意义在 Windows 上,您可能会决定包含 -DHAVE_STDIO_H 是可以的在运行编译器时的命令行选项中。或者您可以手动创建配置文件,并定义 -DHAVE_CONFIG_H (这是指示配置设置在文件“config.h”中的正常方式)。在“config.h”文件中,您将拥有 #define HAVE_STDIO_H 1如上所述。


注意:在 Unix 上,您通常会找到一个名为“configure”的 shell 脚本,您可以运行它来创建 config.h 文件。如果您有 Cygwin,那么您有可能在 Windows 上使用该脚本——我刚刚检查过我在 Solaris 上创建的一个自动没收的包在 Cygwin 下的 Windows 上是可配置的,并且它大部分都有效——除了一些网络处理。我不保证它总是会失败(但它是软件 - 保证任何事情都非常危险)。我应该补充一点,问题出在我的自动配置代码中(网络功能测试显然不太正确),而不是 Cygwin 本身。如果我正确地完成了这项工作,它就会奏效。 (有人说“没有可移植的代码,只有被移植的代码”。这适用于此。)

您确实需要很好地模拟 Unix 环境。 MingW 也可能有效。

关于c - 如何在 VC++ 2005 中定义 HAVE_STDIO_H?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/573610/

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