ZemanZhang 2024-05-12 02:58 采纳率: 0%
浏览 227

pgsql15安装vector报错,如何解决?

安装vector拓展按照步骤走报错,劳烦各位帮忙解决一下谢谢


F:\pgvector>call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.8.5
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

F:\pgvector>set PGROOT=D:\pgsql

F:\pgvector>nmake /F Makefile.win
hnswutils.obj : error LNK2019: 无法解析的外部符号 __imp__pg_global_prng_state,函数 _HnswInitElement 中引用了该符号
ivfbuild.obj : error LNK2001: 无法解析的外部符号 __imp__pg_global_prng_state
ivfkmeans.obj : error LNK2001: 无法解析的外部符号 __imp__pg_global_prng_state
hnswvacuum.obj : error LNK2019: 无法解析的外部符号 _vacuum_delay_point,函数 _MarkDeleted 中引用了该符号
ivfvacuum.obj : error LNK2001: 无法解析的外部符号 _vacuum_delay_point
hnswvacuum.obj : error LNK2019: 无法解析的外部符号 _LockBufferForCleanup,函数 _MarkDeleted 中引用了该符号
ivfvacuum.obj : error LNK2001: 无法解析的外部符号 _LockBufferForCleanup
hnswvacuum.obj : error LNK2019: 无法解析的外部符号 _GetAccessStrategy,函数 _InitVacuumState 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _GetAccessStrategy
ivfvacuum.obj : error LNK2001: 无法解析的外部符号 _GetAccessStrategy
hnswvacuum.obj : error LNK2019: 无法解析的外部符号 _FreeAccessStrategy,函数 _FreeVacuumState 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _FreeAccessStrategy
ivfvacuum.obj : error LNK2001: 无法解析的外部符号 _FreeAccessStrategy
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _CreateTemplateTupleDesc,函数 _InitBuildState 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _CreateTemplateTupleDesc
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _TupleDescInitEntry,函数 _InitBuildState 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _TupleDescInitEntry
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _index_form_tuple,函数 _GetNextTuple 中引用了该符号
ivfinsert.obj : error LNK2001: 无法解析的外部符号 _index_form_tuple
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _MakeSingleTupleTableSlot,函数 _InitBuildState 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _MakeSingleTupleTableSlot
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _ExecStoreVirtualTuple,函数 _AddTupleToSort 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _ExecStoreVirtualTuple
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _slot_getsomeattrs_int,函数 _GetNextTuple 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _slot_getsomeattrs_int
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _tuplesort_begin_heap,函数 _AssignTuples 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _tuplesort_begin_heap
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _tuplesort_puttupleslot,函数 _AddTupleToSort 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _tuplesort_puttupleslot
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _tuplesort_performsort,函数 _BuildIndex 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _tuplesort_performsort
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _tuplesort_gettupleslot,函数 _GetNextTuple 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _tuplesort_gettupleslot
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _tuplesort_end,函数 _BuildIndex 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 _tuplesort_end
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _tuplesort_estimate_shared,函数 _IvfflatBeginParallel 中引用了该符号
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _tuplesort_initialize_shared,函数 _IvfflatBeginParallel 中引用了该符号
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _tuplesort_attach_shared,函数 _IvfflatParallelBuildMain 中引用了该符号
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _pg_prng_uint32,函数 _ComputeCenters 中引用了该符号
ivfkmeans.obj : error LNK2001: 无法解析的外部符号 _pg_prng_uint32
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _sampler_random_fract,函数 _AddSample 中引用了该符号
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _BlockSampler_Init,函数 _ComputeCenters 中引用了该符号
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _BlockSampler_HasMore,函数 _ComputeCenters 中引用了该符号
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _BlockSampler_Next,函数 _ComputeCenters 中引用了该符号
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _reservoir_init_selection_state,函数 _ComputeCenters 中引用了该符号
ivfbuild.obj : error LNK2019: 无法解析的外部符号 _reservoir_get_next_S,函数 _AddSample 中引用了该符号
ivfbuild.obj : error LNK2019: 无法解析的外部符号 __ftol2_sse,函数 _AddSample 中引用了该符号
ivfbuild.obj : error LNK2019: 无法解析的外部符号 __imp__TTSOpsVirtual,函数 _InitBuildState 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 __imp__TTSOpsVirtual
ivfbuild.obj : error LNK2019: 无法解析的外部符号 __imp__TTSOpsMinimalTuple,函数 _InsertTuples 中引用了该符号
ivfscan.obj : error LNK2001: 无法解析的外部符号 __imp__TTSOpsMinimalTuple
ivfflat.obj : error LNK2019: 无法解析的外部符号 _get_tablespace_page_costs,函数 _ivfflatcostestimate 中引用了该符号
ivfkmeans.obj : error LNK2019: 无法解析的外部符号 _palloc_extended,函数 _ElkanKmeans 中引用了该符号
ivfutils.obj : error LNK2001: 无法解析的外部符号 _palloc_extended
ivfscan.obj : error LNK2019: 无法解析的外部符号 _nocache_index_getattr,函数 _GetScanItems 中引用了该符号
ivfscan.obj : error LNK2019: 无法解析的外部符号 _pairingheap_free,函数 _ivfflatendscan 中引用了该符号
ivfscan.obj : error LNK2019: 无法解析的外部符号 _tuplesort_reset,函数 _ivfflatrescan 中引用了该符号
ivfscan.obj : error LNK2019: 无法解析的外部符号 __imp__work_mem,函数 _ivfflatbeginscan 中引用了该符号
ivfvacuum.obj : error LNK2019: 无法解析的外部符号 _PageIndexMultiDelete,函数 _ivfflatbulkdelete 中引用了该符号
sparsevec.obj : error LNK2019: 无法解析的外部符号 _strtol,函数 _sparsevec_in 中引用了该符号
sparsevec.obj : error LNK2019: 无法解析的外部符号 _pg_qsort,函数 _sparsevec_in 中引用了该符号
sparsevec.obj : error LNK2019: 无法解析的外部符号 _pq_sendfloat4,函数 _sparsevec_send 中引用了该符号
vector.obj : error LNK2001: 无法解析的外部符号 _pq_sendfloat4
sparsevec.obj : error LNK2019: 无法解析的外部符号 _pq_getmsgfloat4,函数 _sparsevec_recv 中引用了该符号
vector.obj : error LNK2001: 无法解析的外部符号 _pq_getmsgfloat4
sparsevec.obj : error LNK2019: 无法解析的外部符号 _pg_ltoa,函数 _sparsevec_out 中引用了该符号
LINK : error LNK2001: 无法解析的外部符号 __DllMainCRTStartup@12
D:\pgsql\lib\postgres.lib : warning LNK4272:库计算机类型“x64”与目标计算机类型“x86”冲突
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\lib\x64\LIBCMT.lib : warning LNK4272: 库计算机类型“x64”与目标计算机类型“x86”冲突
vector.dll : fatal error LNK1120: 196 个无法解析的外部命令
NMAKE : fatal error U1077: “cl /nologo /I"D:\pgsql\include\server\port\win32_msvc" /I"D:\pgsql\include\server\port\win32" /I"D:\pgsql\include\server" /I"D:\pgsql\include"   /O2 /fp:fast src\bitutils.obj src\bitvec.obj src\halfutils.obj src\halfvec.obj src\hnsw.obj src\hnswbuild.obj src\hnswinsert.obj src\hnswscan.obj src\hnswutils.obj src\hnswvacuum.obj src\ivfbuild.obj src\ivfflat.obj src\ivfinsert.obj src\ivfkmeans.obj src\ivfscan.obj src\ivfutils.obj src\ivfvacuum.obj src\sparsevec.obj src\vector.obj "D:\pgsql\lib\postgres.lib" /link /DLL /OUT:vector.dll”: 返回代码“0x2”

```bash


```

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2024-05-12 02:58
    关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    这个问题是因为vector的代码中使用到了一些PG库中的符号,但是在编译时没有链接到这些符号,导致编译无法通过。可以尝试以下解决方案:

    1. 确认PG库的链接路径是否正确,可以在Makefile.win中修改相应的链接路径。

    2. 检查VC编译器是否已经安装,并且是否与PG库的版本匹配。如果不匹配需要重新安装正确的编译器版本。

    3. 确认在PG库的配置中是否有打开vector拓展的支持。需要在configure的时候加上--with-vecotrsupport参数。

    4. 检查是否需要在PG库中进行一些配置,可以尝试重新编译PG库或者重新安装PG库和vector拓展。

    5. 如果以上方法无法解决问题,可以尝试使用其他方式来安装vector拓展,或者到vector的官网和论坛上寻求帮助。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月12日