ermig1979 / Simd

C++ image processing and machine learning library with using of SIMD: SSE, AVX, AVX-512, AMX for x86/x64, VMX(Altivec) and VSX(Power7) for PowerPC, NEON for ARM.
http://ermig1979.github.io/Simd
MIT License
2.01k stars 407 forks source link

LNK2038 and LNK2005 Error when trying to link a dynamic library that was compiled statically #262

Open TonyCongqianWang opened 7 months ago

TonyCongqianWang commented 7 months ago

I have compiled a static library that uses the simd library and the library compiles just fine, but when I try to link the library in my main, where I want to test the library function, I get many linker errors. I am not sure what I did wrong and looked at all header files wether I defined some function there or if I missed a pragma once somewhere. I am not sure where the conflict is coming from. Before I added the simd functions (and used opencv instead) everything worked just fine. Additionally I am not even using any of the new functions in my main yet. Just including the header is already the problem.

Any help is appreciated

This is the output:

FAILED: project.exe cmd.exe /C "cd . && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\FaceAlignment.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests -- C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\FaceAlignment.rsp /out:FaceAlignment.exe /implib:FaceAlignment.lib /pdb:FaceAlignment.pdb /version:0.0 /machine:x64 /INCREMENTAL:NO /subsystem:console && cmd.exe /C "cd /D C:\Users\repo\out\build\x64-Release && C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -executionpolicy Bypass -file C:/Users/repos/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary C:/Users/repos/facemarkInferenz/out/build/x64-Release/FaceAlignment.exe -installedDir C:/Users/repos/vcpkg/installed/x64-windows/bin -OutVariable out"" LINK: command "C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\FaceAlignment.rsp /out:FaceAlignment.exe /implib:FaceAlignment.lib /pdb:FaceAlignment.pdb /version:0.0 /machine:x64 /INCREMENTAL:NO /subsystem:console /MANIFEST:EMBED,ID=1" failed (exit code 1169) with the following output:

C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseWarpAffine.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseSynetDeconvolution32f.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseThread.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseGemm32f.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseSynetConvolution32f.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseFill.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseSynetAdd.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseSynetActivation.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseWinograd1.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseWinograd2.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseWinograd3.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseSynetConvolution32fBf16.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseCpu.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Base.lib(SimdBaseBFloat16.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\AmxBf16.lib(SimdAmxBf16Cpu.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Avx1.lib(SimdAvx1Cpu.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Avx2.lib(SimdAvx2Cpu.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Avx512bf16.lib(SimdAvx512bf16Cpu.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Avx512bw.lib(SimdAvx512bwCpu.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Avx512vnni.lib(SimdAvx512vnniCpu.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\Sse41.lib(SimdSse41Cpu.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: cdecl std::_Locinfo::~_Locinfo(void)" (??1_Locinfo@std@@QEAA@XZ) ist bereits in Base.lib(SimdBaseWarpAffine.obj) definiert. C:\Users\repo\out\build\x64-Release\msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: virtual cdecl std::locale::facet::~facet(void)" (??1facet@locale@std@@MEAA@XZ) ist bereits in Base.lib(SimdBaseWarpAffine.obj) definiert. C:\Users\repo\out\build\x64-Release\msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: virtual cdecl std::basic_streambuf<char,struct std::char_traits >::~basic_streambuf<char,struct std::char_traits >(void)" (??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ) ist bereits in Base.lib(SimdBaseSynetDeconvolution32f.obj) definiert. C:\Users\repo\out\build\x64-Release\msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: virtual cdecl std::basic_ios<char,struct std::char_traits >::~basic_ios<char,struct std::char_traits >(void)" (??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ) ist bereits in Base.lib(SimdBaseSynetDeconvolution32f.obj) definiert. C:\Users\repo\out\build\x64-Release\msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: char cdecl std::basic_ios<char,struct std::char_traits >::widen(char)const " (?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z) ist bereits in Base.lib(SimdBaseSynetDeconvolution32f.obj) definiert. C:\Users\repo\out\build\x64-Release\msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: void cdecl std::basic_ostream<char,struct std::char_traits >::_Osfx(void)" (?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ) ist bereits in Base.lib(SimdBaseWarpAffine.obj) definiert. C:\Users\repo\out\build\x64-Release\msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits > & cdecl std::basic_ostream<char,struct std::char_traits >::operator<<(unsigned __int64)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z) ist bereits in Base.lib(SimdBaseWarpAffine.obj) definiert. C:\Users\repo\out\build\x64-Release\msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits > & cdecl std::basic_ostream<char,struct std::char_traits >::put(char)" (?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z) ist bereits in Base.lib(SimdBaseWarpAffine.obj) definiert. C:\Users\repo\out\build\x64-Release\msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits > & cdecl std::basic_ostream<char,struct std::char_traits >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ) ist bereits in Base.lib(SimdBaseWarpAffine.obj) definiert. C:\Users\repo\out\build\x64-Release\msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: virtual cdecl std::basic_iostream<char,struct std::char_traits >::~basic_iostream<char,struct std::char_traits >(void)" (??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ) ist bereits in Base.lib(SimdBaseSynetDeconvolution32f.obj) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale0.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale0.obj) : error LNK2005: "protected: cdecl std::locale::facet::facet(unsigned int64)" (??0facet@locale@std@@IEAA@_K@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale0.obj) : error LNK2005: "public: class std::_Yarn & cdecl std::_Yarn::operator=(char const *)" (??4?$_Yarn@D@std@@QEAAAEAV01@PEBD@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale0.obj) : error LNK2005: "void cdecl std::_Facet_Register(class std::_Facet_base )" (?_Facet_Register@std@@YAXPEAV_Facet_base@1@@Z) ist bereits in msvcprt.lib(locale0_implib.obj) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp cdecl std::locale::_Getgloballocale(void)" (?_Getgloballocale@locale@std@@CAPEAV_Locimp@12@XZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * cdecl std::locale::_Init(bool)" (?_Init@locale@std@@CAPEAV_Locimp@12@_N@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale0.obj) : error LNK2005: "public: static void cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo ,char const )" (?_Locinfo_ctor@_Locinfo@std@@SAXPEAV12@PEBD@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale0.obj) : error LNK2005: "public: static void cdecl std::_Locinfo::_Locinfo_dtor(class std::_Locinfo )" (?_Locinfo_dtor@_Locinfo@std@@SAXPEAV12@@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp cdecl std::locale::_Locimp::_New_Locimp(class std::locale::_Locimp const &)" (?_New_Locimp@_Locimp@locale@std@@CAPEAV123@AEBV123@@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: cdecl std::basic_ios<char,struct std::char_traits >::basic_ios<char,struct std::char_traits >(void)" (??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: cdecl std::basic_streambuf<char,struct std::char_traits >::basic_streambuf<char,struct std::char_traits >(void)" (??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "public: cdecl std::_Locinfo::_Locinfo(char const )" (??0_Locinfo@std@@QEAA@PEBD@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: cdecl std::locale::facet::facet(unsigned int64)" (??0facet@locale@std@@IEAA@_K@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "public: cdecl std::locale::id::operator unsigned int64(void)" (??Bid@locale@std@@QEAA_KXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: char cdecl std::basic_streambuf<char,struct std::char_traits >::_Pninc(void)" (?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: char * cdecl std::basic_streambuf<char,struct std::char_traits >::eback(void)const " (?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: char __cdecl std::basic_streambuf<char,struct std::char_traits >::egptr(void)const " (?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: char cdecl std::basic_streambuf<char,struct std::char_traits >::epptr(void)const " (?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: void cdecl std::basic_streambuf<char,struct std::char_traits >::gbump(int)" (?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "public: class std::locale cdecl std::ios_base::getloc(void)const " (?getloc@ios_base@std@@QEBA?AVlocale@2@XZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: char * cdecl std::basic_streambuf<char,struct std::char_traits >::gptr(void)const " (?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: char cdecl std::basic_streambuf<char,struct std::char_traits >::pptr(void)const " (?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: void cdecl std::basic_streambuf<char,struct std::char_traits >::setg(char ,char ,char )" (?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "protected: void cdecl std::basic_streambuf<char,struct std::char_traits >::setp(char ,char )" (?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(cout.obj) : error LNK2005: "public: void cdecl std::basic_ios<char,struct std::char_traits >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: cdecl std::_Locinfo::_Locinfo(char const )" (??0_Locinfo@std@@QEAA@PEBD@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "protected: cdecl std::locale::facet::facet(unsigned int64)" (??0facet@locale@std@@IEAA@_K@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: class std::_Yarn & __cdecl std::_Yarn::operator=(char const )" (??4?$_Yarn@D@std@@QEAAAEAV01@PEBD@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: cdecl std::locale::id::operator unsigned int64(void)" (??Bid@locale@std@@QEAA_KXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: struct _Cvtvec __cdecl std::_Locinfo::_Getcvt(void)const " (?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: char const * cdecl std::_Locinfo::_Getfalse(void)const " (?_Getfalse@_Locinfo@std@@QEBAPEBDXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: char const cdecl std::_Locinfo::_Gettrue(void)const " (?_Gettrue@_Locinfo@std@@QEBAPEBDXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "private: static void cdecl std::locale::_Locimp::_Locimp_Addfac(class std::locale::_Locimp ,class std::locale::facet ,unsigned __int64)" (?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "protected: char cdecl std::basic_streambuf<char,struct std::char_traits >::_Pninc(void)" (?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: int cdecl std::ios_base::flags(void)const " (?flags@ios_base@std@@QEBAHXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: class std::locale cdecl std::ios_base::getloc(void)const " (?getloc@ios_base@std@@QEBA?AVlocale@2@XZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "protected: char * cdecl std::basic_streambuf<char,struct std::char_traits >::gptr(void)const " (?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: int64 cdecl std::ios_base::precision(void)const " (?precision@ios_base@std@@QEBA_JXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: int cdecl std::basic_streambuf<char,struct std::char_traits >::sputc(char)" (?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: int64 cdecl std::ios_base::width(__int64)" (?width@ios_base@std@@QEAA_J_J@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(locale.obj) : error LNK2005: "public: int64 cdecl std::ios_base::width(void)const " (?width@ios_base@std@@QEBA_JXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(iosptrs.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlock.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlock.obj) : error LNK2005: "public: __cdecl std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QEAA@H@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlock.obj) : error LNK2005: "public: cdecl std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QEAA@XZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: cdecl std::_Locinfo::_Locinfo(char const )" (??0_Locinfo@std@@QEAA@PEBD@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "protected: cdecl std::locale::facet::facet(unsigned int64)" (??0facet@locale@std@@IEAA@_K@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: class std::_Yarn & __cdecl std::_Yarn::operator=(char const )" (??4?$_Yarn@D@std@@QEAAAEAV01@PEBD@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: cdecl std::locale::id::operator unsigned int64(void)" (??Bid@locale@std@@QEAA_KXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: struct _Cvtvec __cdecl std::_Locinfo::_Getcvt(void)const " (?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: char const * cdecl std::_Locinfo::_Getfalse(void)const " (?_Getfalse@_Locinfo@std@@QEBAPEBDXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: char const __cdecl std::_Locinfo::_Gettrue(void)const " (?_Gettrue@_Locinfo@std@@QEBAPEBDXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: unsigned short const cdecl std::_Locinfo::_W_Getdays(void)const " (?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: unsigned short const * cdecl std::_Locinfo::_W_Getmonths(void)const " (?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: int cdecl std::ios_base::flags(void)const " (?flags@ios_base@std@@QEBAHXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: class std::locale cdecl std::ios_base::getloc(void)const " (?getloc@ios_base@std@@QEBA?AVlocale@2@XZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: int64 cdecl std::ios_base::precision(void)const " (?precision@ios_base@std@@QEBA_JXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: int64 cdecl std::ios_base::width(int64)" (?width@ios_base@std@@QEAA_J_J@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(wlocale.obj) : error LNK2005: "public: int64 cdecl std::ios_base::width(void)const " (?width@ios_base@std@@QEBA_JXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "public: cdecl std::_Locinfo::_Locinfo(char const )" (??0_Locinfo@std@@QEAA@PEBD@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "protected: cdecl std::locale::facet::facet(unsigned int64)" (??0facet@locale@std@@IEAA@_K@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "public: class std::_Yarn & __cdecl std::_Yarn::operator=(char const )" (??4?$_Yarn@D@std@@QEAAAEAV01@PEBD@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "public: cdecl std::locale::id::operator unsigned int64(void)" (??Bid@locale@std@@QEAA_KXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "public: struct _Cvtvec cdecl std::_Locinfo::_Getcvt(void)const " (?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "protected: char __cdecl std::basic_streambuf<char,struct std::char_traits >::_Pninc(void)" (?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "public: unsigned short const cdecl std::_Locinfo::_W_Getdays(void)const " (?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "public: unsigned short const * cdecl std::_Locinfo::_W_Getmonths(void)const " (?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "public: int cdecl std::ios_base::flags(void)const " (?flags@ios_base@std@@QEBAHXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "public: class std::locale cdecl std::ios_base::getloc(void)const " (?getloc@ios_base@std@@QEBA?AVlocale@2@XZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "protected: char * cdecl std::basic_streambuf<char,struct std::char_traits >::gptr(void)const " (?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "public: int cdecl std::basic_streambuf<char,struct std::char_traits >::sputc(char)" (?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "public: int64 cdecl std::ios_base::width(int64)" (?width@ios_base@std@@QEAA_J_J@Z) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xlocale.obj) : error LNK2005: "public: int64 cdecl std::ios_base::width(void)const " (?width@ios_base@std@@QEBA_JXZ) ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xstol.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xstoul.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xstoll.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xstoull.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xmtx.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xstrcoll.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xdateord.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xwctomb.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xwctomb.obj) : error LNK2005: _Getcvt ist bereits in msvcprt.lib(MSVCP140.dll) definiert. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xwcscoll.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xwcsxfrm.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xgetwctype.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xtowlower.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xtowupper.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(xstrxfrm.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(StlCompareStringA.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(StlCompareStringW.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(StlLCMapStringW.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein. C:\Users\repo\out\build\x64-Release\libcpmt.lib(StlLCMapStringA.obj) : error LNK2038: Konflikt ermittelt für "RuntimeLibrary": Der Wert "MT_StaticRelease" stimmt nicht mit dem Wert "MD_DynamicRelease" in main.cpp.obj überein.

C:\Users\repo\out\build\x64-Release\LINK : warning LNK4098: Standardbibliothek "LIBCMT" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.

TonyCongqianWang commented 7 months ago

After typing everything out I realized: multiple definitions, that might be because of the multiple simd libraries! And indeed when I remove:

find_library(SIMD_BASE_LIBRARY NAMES base)
find_library(AMXBF16_LIBRARY NAMES amxbf16)
find_library(AVX1_LIBRARY NAMES avx1)
find_library(AVX2_LIBRARY NAMES avx2)
find_library(AVX512BF16_LIBRARY NAMES avx512bf16)
find_library(AVX512BW_LIBRARY NAMES avx512bw)
find_library(AVX512VNNI_LIBRARY NAMES avx512vnni)
find_library(NEON_LIBRARY NAMES neon)
find_library(SSE41_LIBRARY NAMES sse41)
find_library(VMX_LIBRARY NAMES vmx)
find_library(VSX_LIBRARY NAMES vsx)

from my CMakeList the program is compiling and linking again! But now I am wondering, even when I just included the Base.lib, I couldn't link properly, how do I properly include those specialized libraries? Is that just not possible in a shared library on windows?

ermig1979 commented 7 months ago

Hi. When you want to use Simd.dll you have to link just it. Simd.dll links the rest libraries inside itself. During static linking you have to link all libraries.

TonyCongqianWang commented 7 months ago

Hello thank you so much for the quick reply! I do indeed want to link Simd statically to create my own library that exports functions dynamically. The static linking worked with and without the libraries but only when linking my library dynamically in a test program, I received the errors. Do you have any Idea what caused them? I use the newer version installed via vcpgk for x64-Windows