新闻详情

新闻详情

首页 / 资讯中心 / 详情

pgvector Windows 编译报错?C2196 与 C4141 两个错误一次修完

发布时间:2026/9/5 17:38:53来源:尧图网络
pgvector Windows 编译报错?C2196 与 C4141 两个错误一次修完
pgvector Windows 编译报错C2196 与 C4141 两个错误一次修完【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvectorpgvector 的 Windows 编译翻车多半不是你的代码问题——C2196 和 C4141 这两类报错基本都是环境姿势错了。照着下面五步走完10 分钟内能修好。一、开工前 3 分钟环境对号入座先把你的环境摆到桌面上比一比项目要求说明操作系统Windows 10/11 64 位32 位系统直接放弃PostgreSQL16 或 17必须是 64 位版本32 位版会触发下面的 C2196编译器Visual Studio Build Tools 2022C 桌面工作负载用 vcvars64 环境不是 vcvars32pgvector 源码最新版仓库当前为 0.8.6老版本在 Windows 上本身有坑Datum——PostgreSQL 里装任意一行数据值的通用占位格64 位系统下占 8 字节——它的大小直接决定头文件里走哪段分支这也是后文报错的关键。二、现象对照你的报错属于哪一类先看两种典型日志只保留最关键的几行tupmacs.h(65): error C2196: case value 4 already used src\hnsw.c(190): warning C4141: dllexport: used more than once……其余行省略现象嫌疑原因tupmacs.h 报 C2196 case value 4 already used用了 32 位编译环境SIZEOF_DATUMDatum 占位格字节数的宏取错分支PostgreSQL 头文件内部自相矛盾C4141 dllexport used more than once同一符号被多处导出声明常见于源码版本偏老新版 pgvector 已收敛!error PGROOT is not set编译环境没设置 PGROOTMakefile.win 第一道检查就拦住你三、分步修复三步走通第 1 步换成 64 位编译环境。关键是让工具链的位数和 PostgreSQL 的安装位数对齐。C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat进入 64 位 MSVC 环境别用 vcvars32.bat做完后应看到命令行里出现64-bit x64字样且cl命令可用。第 2 步设置 PGROOT 并拉取源码编译。编译脚本要找到 PostgreSQL 的安装根目录。set PGROOTC:\Program Files\PostgreSQL\16 git clone https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector nmake /F Makefile.win做完后应看到vector.dll生成src 下的 .c 文件逐个编译通过没有 C2196。第 3 步安装到 PostgreSQL。把生成的 dll 和 SQL 文件放进安装目录。nmake /F Makefile.win install做完后应看到文件被拷入%PGROOT%\lib和%PGROOT%\share\extension无 error 输出。四、结果验收两条命令确认修好打开 psql 跑最小验证CREATE EXTENSION vector; SELECT vec_l2_squared_distance(ARRAY[1,2,3]::vector, ARRAY[1,2,3]::vector);看到第一条不报 could not open extension control file、第二条返回0就算彻底修好了。想再放心一点可以跑 test/t/ 里的 Perl 回归用例。五、防复发清单✅ 装 PostgreSQL 时确认版本页选的是 64-bit装完用SELECT version();复核一次✅ 编译前先看cl输出的位数提示64 位 PostgreSQL 只配 vcvars64✅ pgvector 保持拉最新代码再编译老 tag 在 Windows 上有已知缺陷✅ 换机器时把 PGROOT 记下来它指向的是含include/server的那个安装目录修好之后你可以顺手把 Makefile.win 里的OPTFLAGS填上目标 CPU 的/arch参数让向量距离计算用上你机器的 SIMD 指令集。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

STM32驱动SIM900A工业级状态机设计与实现 2026/9/5 18:20:59

STM32驱动SIM900A工业级状态机设计与实现

简介:本资源是一套基于STM32平台的SIM900A GSM/GPRS模块成熟驱动程序,面向嵌入式初学者与物联网项目开发者,解决模块AT指令交互复杂、通信功能集成门槛高等实际问题。驱动已通过硬件实测,支持网络注册查询、短信收发、语音呼叫等核…

阅读更多 →
校园食堂点评系统:Spring Boot+Vue+MySQL前后端分离实战 2026/9/5 18:20:59

校园食堂点评系统:Spring Boot+Vue+MySQL前后端分离实战

校园食堂点评系统这类项目,在毕业设计和课程设计里出现频率非常高。它不是单纯的管理员增删改查,而是把食堂菜品、用户点评、评分统计、留言互动放在一个前后端分离的工程里,既能展示 Spring Boot 的后端接口设计能力,又能展示 Vu…

阅读更多 →
校园食堂点评系统开发全流程:基于Spring Boot+Vue+MySQL的详细实现 2026/9/5 18:20:59

校园食堂点评系统开发全流程:基于Spring Boot+Vue+MySQL的详细实现

写校园食堂点评系统这类毕业设计时,最容易出现的问题不是某个功能不会写,而是“数据库表之间是什么关系、前后端如何约定接口、评论状态该由谁控制”这些整体性问题没有梳理清楚。一个看起来只是“给食堂打分、留言”的项目,实际上要同时处理…

阅读更多 →
基于STM32F103的智能井盖终端:从传感器采集到低功耗上报全流程实现 2026/9/5 18:20:59

基于STM32F103的智能井盖终端:从传感器采集到低功耗上报全流程实现

我最近把普中 STM32F103 开发板重新拿出来做了一个“精灵”智能井盖项目。目的不是简单地驱动几个模块点灯,而是把一套完整的物联网终端链路走通:井盖状态感知、环境气体监测、水浸预警、低功耗处理、远程数据上报。这块开发板在很多人的桌面上已经吃了很…

阅读更多 →
STM8S105C8T6精准解码PT2259-S红外协议实战指南 2026/9/5 18:20:59

STM8S105C8T6精准解码PT2259-S红外协议实战指南

简介:本资源是一套基于STM8S105C8T6微控制器的红外遥控解码完整开发包,面向嵌入式初学者、电子设计爱好者及STM8平台开发者,解决红外信号捕获、协议解析(如NEC/RC5)与上位机通信等核心问题,适用于智能家居遥…

阅读更多 →
基于51单片机的高可靠性烟雾报警系统设计 2026/9/5 18:17:59

基于51单片机的高可靠性烟雾报警系统设计

简介:本资源是一套基于STC89C51单片机的烟雾与火灾智能报警系统完整开发资料,面向电子类专业本科生课程设计、毕业设计及嵌入式初学者实践项目。系统融合MQ-2气体检测、DS18B20温度采集、ADC0832模数转换与GSM远程通信功能,支持声光报警、继电…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞