libzippp icon indicating copy to clipboard operation
libzippp copied to clipboard

Static linking: function already defined.

Open Kesanov opened this issue 1 year ago • 0 comments

Building a vcpkg manifest cmake project with the tripplet x86-windows-static gives the following errors:

[build] libzippp_static.lib(libzippp.cpp.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in Main.obj [D:\H55\build\H55.vcxproj]
[build] msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "public: bool __thiscall std::ios_base::good(void)const " (?good@ios_base@std@@QBE_NXZ) already defined in libzippp_static.lib(libzippp.cpp.obj) [D:\H55\build\H55.vcxproj]
[build] msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "public: int __thiscall std::ios_base::flags(void)const " (?flags@ios_base@std@@QBEHXZ) already defined in libzippp_static.lib(libzippp.cpp.obj) [D:\H55\build\H55.vcxproj]
[build] msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "public: __int64 __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,__int64)" (?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE_JPBD_J@Z) already defined in libzippp_static.lib(libzippp.cpp.obj) [D:\H55\build\H55.vcxproj]
[build] msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits<char> >::clear(int,bool)" (?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) already defined in libzippp_static.lib(libzippp.cpp.obj) [D:\H55\build\H55.vcxproj]
[build] msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) already defined in libzippp_static.lib(libzippp.cpp.obj) [D:\H55\build\H55.vcxproj]
[build] msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::tie(void)const " (?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ) already defined in libzippp_static.lib(libzippp.cpp.obj) [D:\H55\build\H55.vcxproj]
[build] msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "public: class std::basic_streambuf<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::rdbuf(void)const " (?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ) already defined in libzippp_static.lib(libzippp.cpp.obj) [D:\H55\build\H55.vcxproj]
[build] msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "public: void __thiscall std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" (?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in libzippp_static.lib(libzippp.cpp.obj) [D:\H55\build\H55.vcxproj]
[build] msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ) already defined in libzippp_static.lib(libzippp.cpp.obj) [D:\H55\build\H55.vcxproj]
[build]

My cmake file:

cmake_minimum_required(VERSION 3.0.0)

set(VCPKG_TARGET_TRIPLET x86-windows-static)

project(H55 VERSION 0.1.0)

add_library(H55 SHARED H55.cpp Main.cpp)

find_package(minhook REQUIRED)
find_package(libzippp REQUIRED)

target_link_libraries(H55
    PRIVATE
        minhook::minhook
        libzippp::libzippp
) 

Kesanov avatar Sep 17 '22 07:09 Kesanov