c + + - boost link fejl LNK2038: 'boost\_log\_abi' 'v2s\_mt\_nt6' matcher ikke 'v2\_mt\_nt6'
Problem
hvad betyder denne linkfejl? og hvordan man løser det
error LNK2038: “boost\_log\_abi” “v2s\_mt\_nt6” doesn't match “v2\_mt\_nt6"
Jeg har forsøgt
ADD\_DEFINITIONS(-DBOOST\_ALL\_DYN\_LINK)
ADD\_DEFINITIONS(-DBOOST\_LOG\_DYN\_LINK)
ADD\_DEFINITIONS(-DBOOST\_USE\_WINAPI\_VERSION=0x601)
Bedste reference
Dit Boost.Log-bibliotek synes at have været bygget med forskellige flag, end dit hovedprogram.
Fra
config.hpp
kan vi se, hvad disse ABI navne betyder: [10]-
v2s\_mt\_nt6
er statisk forbundet med multithreading-understøttelse på Windows Vista eller nyere (version 6)
-
v2\_mt\_nt6
er dynamisk linket, med multithreading-understøttelse, i Windows Vista eller nyere (version 6)
Makroen
BOOST\_LOG\_DLL
bestemmer hvilken af de to stier, der skal bruges. Det er defineret, hvis nogen af BOOST\_LOG\_DYN\_LINK
eller BOOST\_ALL\_DYN\_LINK
er defineret.Hvis du statisk linker til Boost.Log (via en
.lib
filer eller lignende), skal du ikke definere en af disse to makroer. 1 Dette betyder, at du enten kan fjerne de ekstra præprocessordefinitioner (fordi du forsøger at linke til et statisk bibliotek) eller bruge en dynamisk biblioteksversion af Boost (se for eksempel her hvordan du konfigurerer det på Windows). ]]
1 Bemærk, at nogle biblioteker ignorerer disse flag. Boost.Log synes at være et af de få, der rent faktisk forårsager problemer, hvis disse makroer er fejlkonfigurerede