我想编译VTK,因此它在visual studio中使用静态运行时库(/ mt和/ MTd在visual studio中)而不是动态运行时库(/ Md和/ MDd)。
为此,我更改了VTK附带的CmakeLists文件并将这些行添加到其中:
if (MSVC)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT" )
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd" )
endif (MSVC)
当我尝试构建示例时,我收到此链接器错误:
Error 101 error LNK2005: "private: __cdecl type_info::type_info(class type_info const &)" (??0type_info@@AEAA@AEBV0@@Z) already defined in LIBCMTD.lib(typinfo.obj) C:\Local\VTK-6.2.0\build\Examples\Tutorial\Step3\Cxx\MSVCRTD.lib(ti_inst.obj) Cone3
如果我删除了我添加到cmakelists的部分,它会编译并运行所有示例。
由于我的应用程序已经使用静态库,我需要确保VTK也使用静态库。
如何解决此问题?
答案 0 :(得分:0)
直接的方法是忽略-default-library MSVCRTD.lib - 但是我会建议在解决它之前理解这个问题。
您可以使用/ VERBOSE构建,搜索MSVCRTD.lib的输出并到达加载它的第一个位置。可能它是示例使用的第三方库,或者您必须切换的其他项目。