当我从apache网站为Windows构建(调试和发布)镶木地板/箭头代码时,我将获得一组.lib文件以及.dll文件。当我在解决方案中包含dll文件时,一切正常。但是,当我添加静态库时,会出现以下错误:
检测到'RuntimeLibrary'错误LNK2038不匹配:值'MD_DynamicRelease'与值'MTd_StaticDebug'不匹配
我按照apache网站上的说明构建库,以使用Visual Studio(MSVC)解决方案文件进行构建:
cd cpp
mkdir build
cd build
cmake .. -G "Visual Studio 14 2015 Win64" ^
-DARROW_BUILD_TESTS=ON ^
-DGTest_SOURCE=BUNDLED
cmake --build . --config Release
以上错误似乎与使用调试.lib而不是发行版有关,但是如您所见,我在构建库时正在构建发行版。知道发生了什么事吗?
我还遇到了其他一些类型的错误,我认为这些错误可能与上述问题有关。为了以防万一,我也会将它们粘贴在这里: ->对于“ _ITERATOR_DEBUG_LEVEL”检测到错误LNK2038不匹配:parquet_static.lib(column_writer.obj)中的值“ 2”与值“ 0”不匹配
错误LNK2001无法解析的外部符号_CrtDbgReportW libconcrtd.lib(VirtualProcessorRoot.obj)
错误LNK2001无法解析的外部符号“ __declspec(dllimport)类> boost :: system :: error_category const&__cdecl boost :: system :: generic_category(void)”(__imp_?generic_category @ system @ boost @@ YAAEBVerror_category @ 12 @ XZ)arrow_static.lib(thread-pool.obj)1
谢谢
编辑:
这是我项目中的构建设置。这里有什么与构建apache库有冲突的地方吗?
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PreprocessorDefinitions>
ARROW_STATIC;PARQUET_STATIC;
_WIN32;
WIN32;
NDEBUG;
_WINDOWS;
_USRDLL;
_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH;
%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<Optimization>MaxSpeed</Optimization>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<AdditionalOptions>/Qspectre</AdditionalOptions>
</ClCompile>