Dar*_*azi 0 c++ cmake vcpkg apache-arrow
我开始使用 Apache arrow。我是通过vcpkg安装的。一切都很好,直到我将安装的 arrow 更新到 6.0.1。我使用 powershell 控制台中的以下命令安装了它:
vcpkg install arrow:x64-windows-static
Run Code Online (Sandbox Code Playgroud)
它已成功安装,我看到了成功消息(不知何故):
The package arrow provides CMake targets:
find_package(arrow CONFIG REQUIRED)
target_link_libraries(main PRIVATE re2::re2 arrow_static parquet_static arrow_bundled_dependencies)
Run Code Online (Sandbox Code Playgroud)
我有一个名为csv_column_test.cpp. 然后我注释掉了该文件的所有内容,除了这两行:
#define ARROW_STATIC
#include <arrow/api.h>
Run Code Online (Sandbox Code Playgroud)
并尝试编译它。我不断遇到这个错误:
error C2668: 'arrow::internal::launder': ambiguous call to overloaded function
Run Code Online (Sandbox Code Playgroud)
我想念什么?如何让事情再次运转?
谢谢。
这是完整的错误日志:
>------ Build All started: Project: StockPredII, Configuration: x64-Debug (default) ------
[1/2] Building CXX object splib\CMakeFiles\splib_test.dir\sparrow\csv_column_test.cpp.obj
FAILED: splib/CMakeFiles/splib_test.dir/sparrow/csv_column_test.cpp.obj
C:\PROGRA~2\MICROS~4\2019\PROFES~1\VC\Tools\MSVC\1429~1.301\bin\Hostx64\x64\cl.exe /nologo /TP -DARROW_DEPENDENCY_SOURCE=VCPKG -D_SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING -I\Catch2\include -I..\..\..\splib -IE:\sandbox\vcpkg\installed\x64-windows-static\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MTd /Zi /Ob0 /Od /RTC1 -std:c++17 /showIncludes /Fosplib\CMakeFiles\splib_test.dir\sparrow\csv_column_test.cpp.obj /Fdsplib\CMakeFiles\splib_test.dir\ /FS -c ..\..\..\splib\sparrow\csv_column_test.cpp
E:\sandbox\vcpkg\installed\x64-windows-static\include\arrow\util\aligned_storage.h(36): error C2668: 'arrow::internal::launder': ambiguous call to overloaded function
E:\sandbox\vcpkg\installed\x64-windows-static\include\arrow/util/launder.h(29): note: could be 'T *arrow::internal::launder<T>(T *) noexcept'
with
[
T=std::unique_ptr<arrow::Buffer,std::default_delete<arrow::Buffer>>
]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\new(33): note: or '_Ty *std::launder<T>(_Ty *) noexcept' [found using argument-dependent lookup]
with
[
_Ty=std::unique_ptr<arrow::Buffer,std::default_delete<arrow::Buffer>>,
T=std::unique_ptr<arrow::Buffer,std::default_delete<arrow::Buffer>>
]
E:\sandbox\vcpkg\installed\x64-windows-static\include\arrow/util/aligned_storage.h(36): note: while trying to match the argument list '(T *)'
with
[
T=std::unique_ptr<arrow::Buffer,std::default_delete<arrow::Buffer>>
]
E:\sandbox\vcpkg\installed\x64-windows-static\include\arrow/util/aligned_storage.h(36): note: while compiling class template member function 'T *arrow::internal::AlignedStorage<T>::get(void) noexcept'
with
[
T=std::unique_ptr<arrow::Buffer,std::default_delete<arrow::Buffer>>
]
E:\sandbox\vcpkg\installed\x64-windows-static\include\arrow/result.h(431): note: see reference to function template instantiation 'T *arrow::internal::AlignedStorage<T>::get(void) noexcept' being compiled
with
[
T=std::unique_ptr<arrow::Buffer,std::default_delete<arrow::Buffer>>
]
E:\sandbox\vcpkg\installed\x64-windows-static\include\arrow/result.h(435): note: see reference to class template instantiation 'arrow::internal::AlignedStorage<T>' being compiled
with
[
T=std::unique_ptr<arrow::Buffer,std::default_delete<arrow::Buffer>>
]
E:\sandbox\vcpkg\installed\x64-windows-static\include\arrow/buffer_builder.h(156): note: see reference to class template instantiation 'arrow::Result<std::unique_ptr<arrow::Buffer,std::default_delete<arrow::Buffer>>>' being compiled
ninja: build stopped: subcommand failed.
Build All failed.
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我在 CmakeLists.txt 中使用这个脚本来查找箭头:
find_package(arrow CONFIG REQUIRED)
if (${arrow_FOUND})
message(STATUS "Found Apache Arrow: ${arrow_FOUND}")
message(STATUS "Apache Arrow Version: ${ARROW_VERSION}")
message(STATUS "Apache Arrow DLL Version: ${ARROW_FULL_SO_VERSION}")
endif()
Run Code Online (Sandbox Code Playgroud)
这是此代码片段的 cmake 输出:
1> [CMake] -- Found thrift: E:/sandbox/vcpkg/installed/x64-windows-static
1> [CMake] -- Found Apache Arrow: 1
1> [CMake] -- Apache Arrow Version: 6.0.1
1> [CMake] -- Apache Arrow DLL Version: 600.1.0
Run Code Online (Sandbox Code Playgroud)
这是Apache Arrow 中的一个错误,已在 2021 年 12 月的此提交中修复。
我认为它将包含在下一个版本中。
std::launder这是由于C++17中标准库中引入了引起的。因此,如果您针对较旧的标准版本进行编译(如果可能),则不应遇到这种情况。
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |