0

我已经安装了解析 C 代码的 pycparser。

使用 pycparser 我想解析一个开源项目,即 PostgreSQL(version-11.0)。我使用 Visual Studio Express 2017 编译器套件构建了它。但是,在编译过程中它找不到一些头文件,即 windows.hwinsock2.h.

在查看构建PostgreSQL的目录结构时,我发现它没有这些头文件。如何解决这个问题?

还发生了一个奇怪的错误:

postgresql/src/include/ch:363:2: error: #error 必须有一个工作的 64 位整数数据类型

注意:我使用的是 Windows 10 64 位平台和 postgresql-11.0

步骤如下:
我下载了 Visual Studio 2017、Windows-10 SDK、Active Perl,如在 PostgreSQL 中从源代码构建的步骤中所述。

在此之后,我打开 Visual Studio 的开发人员命令提示符并导航到该文件夹postgresql-11.0/src/tools/msvc

使用命令“build”来构建 postgresql。构建过程成功,但仍然windows.h没有winsock2.h在 PostgreSQL 的目录结构中找到。

4

1 回答 1

0

我不知道pycparser,但你的问题可能有两个方面:

  1. 您没有为 pycparser 提供正确的包含目录列表。您提到的头文件不是 PostgreSQL 的一部分。

    也许您可以从 Visual Studio 提示符的环境中获取该列表。我这里没有 Windows 来验证这一点。

  2. 错误消息意味着既没有HAVE_LONG_INT_64也没有HAVE_LONG_LONG_INT_64定义。

    在 MSVC 安装过程中pg_config.h.win32复制到的Now具有以下内容:pg_config.h

    #if (_MSC_VER > 1200)
    #define HAVE_LONG_LONG_INT_64 1
    #endif
    

    由于您没有使用 MSVC,因此您可能没有_MSC_VER设置,这会导致错误。

    您可以定义_MSC_VER并查看是否可以构建。

本质上,您在这里处于困境,因为 pycparser 不是受支持的构建过程,因此您必须深入研究源代码并随时修复问题。如果不了解 PostgreSQL 源代码和构建过程,您可能不会走得太远。

于 2018-10-26T09:45:01.690 回答