解决LNK4272错误

Resolving LNK4272 errors

提问人:Vandalism 提问时间:5/17/2023 最后编辑:Vandalism 更新时间:5/26/2023 访问量:310

问:

我在 Windows 上安装 Pgvector 扩展有问题

所以安装代码是

set "PGROOT=C:\Program Files\PostgreSQL\15"
git clone --branch v0.4.2 https://github.com/pgvector/pgvector.git
cd pgvector
nmake /F Makefile.win
nmake /F Makefile.win install

我收到致命错误:

C:\Program Files\pgvector>nmake /F Makefile.win

C:\Program Files\PostgreSQL\15\lib\postgres.lib:警告LNK4272:库计算机类型“x64”与目标计算机类型“x86”冲突 矢量.dll:致命错误LNK1120:109 个未解析的外部

除了这些之外,我还收到一堆 LNK 2001 和 2019 错误。

我正在使用; MSVC v143 包 Windows 通用 CRT SDK Windows 10 SDK

编译器错误 lnk2019 nmake lnk2001

评论


答:

2赞 Cesco2142 5/25/2023 #1

我根本不擅长编译,但我设法做到了。这是我是如何做到的:

我是如何编译扩展的:

  • 下载 Visual Studio 社区 2022 并安装与 Windows 和 C++ 相关的所有组件(我说 ALL 不要为缺少 lib 而烦恼,但如果您缺乏空间,您可以选择要安装的库)

  • 查找 vcvarsall.bat 文件的位置(通常为:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build)

  • 从 GitHub 下载 PGVECTOR 扩展,并将其放在一个易于调用的文件夹中,例如:C:/pgvector

  • 找到 PostgreSQL 安装的根文件夹(例如:C:\Program Files\PostgreSQL\15)

  • 确定您正在使用的 CPU,因为您稍后需要选择一个参数:

    vcvarsall.bat x86_amd64
    vcvarsall.bat x86_amd64 10.0.10240.0
    vcvarsall.bat x86_arm UWP 10.0.10240.0 vcvarsall.bat x86_arm onecore 10.0.10240.0 -vcvars_ver=14.0 vcvarsall.bat x64 8.1


    vcvarsall.bat x64 存储 8.1

  • 你现在准备好了!

  • 在 Windows 栏中找到以下工具: VS 2022 开发人员命令提示

  • 键入以下命令(如果需要,请进行调整):

    cd C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build
    vcvarsall.bat x64
    set "PGROOT=C:\Program Files\PostgreSQL\15"
    cd c:/pgvector
    nmake /F Makefile.win
    nmake /F Makefile.win install
    

它在两台计算机上为我工作,希望它也适合您或将来可以帮助其他用户。

评论

0赞 Xeppit 6/4/2023
在 Windows 中,您必须以管理员身份执行“nmake /F Makefile.win install”的 cmd,例如 sudo。对我有用。