检测到“ RuntimeLibrary”的LNK2038不匹配:值“ MD_DynamicRelease”与值“ MTd_StaticDebug”不匹配

时间:2019-05-17 05:02:17

标签: c++ static-libraries parquet

当我从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>

0 个答案:

没有答案