Skip to content

[bug] Runtime  #130

@granger35

Description

@granger35

Describe the bug
Debug Multithread runtime library in debug (/MDd) mode replaced by the release one (/MD) which result in a link error.

To Reproduce
Steps to reproduce the behavior:

  1. CMake for Visual Studio 2019, arch x64 and BUILD_SHARED_LIBS=True, PopSift_BUILD_EXAMPLES=False
  2. Load the .sln in Visual Studio 2019,
  3. rebuild in debug mode for x64,
  4. See warning related to substitution of /MDd by /MD and the final error message

Expected behavior
When building in debug mode, warnings inform that the Multithread runtime library in debug mode (/MDd) is substituted by the realase one (/MD). This results in a link error LNK2038 avoiding to build popsift in debug mode.
In Visual Studio, by forcing /MD in the project settings (C/C++- Code generation) in debug mode, the project builds.

Log
warning message:

2>cl  : Ligne de commande warning D9025 : substitution de '/MDd' par '/MD'

error message:

2>popsift_generated_features.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_features.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_constants.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_constants.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_conf.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_conf.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_gauss_filter.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_gauss_filter.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_image.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_image.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_pyramid.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_pyramid.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_octave.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_octave.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_pyramid_build.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_pyramid_build.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_pyramid_build_aa.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_pyramid_build_aa.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_pyramid_build_ai.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_pyramid_build_ai.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_pyramid_build_ra.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_pyramid_build_ra.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_pyramid_fixed.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_pyramid_fixed.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_extremum.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_extremum.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_extrema.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_extrema.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_orientation.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_orientation.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_filtergrid.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_filtergrid.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_desc.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_desc.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_desc_loop.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_desc_loop.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_desc_iloop.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_desc_iloop.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_desc_grid.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_desc_grid.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_desc_igrid.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_desc_igrid.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_desc_notile.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_desc_notile.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_assist.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_assist.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_plane_2d.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_plane_2d.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_write_plane_2d.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_write_plane_2d.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_debug_macros.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_debug_macros.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_device_prop.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_device_prop.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>   Création de la bibliothèque C:/Dev/popsift/build/src/Debug/popsiftd.lib et de l'objet C:/Dev/popsift/build/src/Debug/popsiftd.exp
2>LINK : warning LNK4098: conflit entre la bibliothèque par défaut 'MSVCRT' et les autres bibliothèques ; utilisez /NODEFAULTLIB:library
2>C:\Dev\popsift\build\Windows-AMD64\Debug\popsiftd.dll : fatal error LNK1319: 54 discordances détectées

Desktop

  • OS: Windows 10
  • PopSift version: branch develop (similar behaviour on v1.0.0-rc3)
  • CUDA: 11.3
  • Visual studio: 2019
  • Architecture: x64
  • CMake options: BUILD_SHARED_LIBS = True, Debug mode

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions