Błąd narzędzi konsolidatora LNK2038
wykryto niezgodność dla wartości "name": wartość "value_1" nie jest zgodna z wartością "value_2" w nazwie pliku.obj
Konsolidator wykrył niezgodność symboli. Ten błąd wskazuje, że różne części aplikacji, w tym biblioteki lub inny kod obiektu, z którymi aplikacja łączy się, używają sprzecznych definicji symbolu. Pragma wykrywania niezgodności służy do definiowania takich symboli i wykrywania ich wartości powodujących konflikt.
Możliwe przyczyny i rozwiązania
Ten błąd może wystąpić, gdy plik obiektu w projekcie jest nieaktualny. Przed wypróbowaniem innych rozwiązań tego błędu wykonaj czystą kompilację, aby upewnić się, że pliki obiektów są aktualne.
Program Visual Studio definiuje następujące symbole, aby zapobiec łączeniu niezgodnego kodu, co może powodować błędy czasu wykonywania lub inne nieoczekiwane zachowanie.
_MSC_VER
Wskazuje główne i pomocnicze numery wersji kompilatora Microsoft C++ (MSVC) używanego do kompilowania aplikacji lub biblioteki. Kod kompilowany przy użyciu jednej wersji MSVC jest niezgodny z kodem skompilowanym przy użyciu wersji z różnymi numerami wersji głównych i pomocniczych. Aby uzyskać więcej informacji, zobacz_MSC_VER
w temacie Wstępnie zdefiniowane makra.Jeśli łączysz się z biblioteką, która nie jest zgodna z używaną wersją MSVC i nie możesz uzyskać ani skompilować zgodnej wersji biblioteki, możesz użyć wcześniejszej wersji kompilatora, aby skompilować projekt: zmienić właściwość Zestawu narzędzi platformy projektu na wcześniejszy zestaw narzędzi. Aby uzyskać więcej informacji, zobacz How to: Modify the Target Framework and Platform Toolset (Instrukcje: modyfikowanie platformy docelowej i zestawu narzędzi platformy).
_ITERATOR_DEBUG_LEVEL
Wskazuje poziom funkcji zabezpieczeń i debugowania, które są włączone w standardowej bibliotece języka C++. Te funkcje mogą zmieniać reprezentację niektórych obiektów biblioteki standardowej języka C++, a tym samym sprawić, że będą one niezgodne z tymi, które korzystają z różnych funkcji zabezpieczeń i debugowania. Aby uzyskać więcej informacji, zobacz _ITERATOR_DEBUG_LEVEL.RuntimeLibrary
Wskazuje wersję standardowej biblioteki języka C++ i środowiska uruchomieniowego języka C używanego przez aplikację lub bibliotekę. Kod korzystający z jednej wersji standardowej biblioteki języka C++ lub środowiska uruchomieniowego języka C jest niezgodny z kodem, który używa innej wersji. Aby uzyskać więcej informacji, zobacz /MD, /MT, /LD (Użyj biblioteki czasu wykonywania)._PPLTASKS_WITH_WINRT
Wskazuje, że kod korzystający z biblioteki wzorców równoległych (PPL) jest połączony z obiektami skompilowanymi przy użyciu innego ustawienia dla opcji kompilatora /ZW . (/ZW
obsługuje język C++/CX). Kod, który używa lub zależy od PPL, musi być skompilowany przy użyciu tego samego/ZW
ustawienia używanego w pozostałej części aplikacji.
Upewnij się, że wartości tych symboli są spójne w projektach w rozwiązaniu programu Visual Studio, a także że są one spójne z kodem i bibliotekami, z którymi aplikacja łączy się.
Problemy z biblioteką innych firm i oprogramowanie vcpkg
Jeśli ten błąd występuje podczas próby skonfigurowania biblioteki innej firmy w ramach kompilacji, rozważ użycie narzędzia vcpkg, menedżera pakietów języka C++, aby zainstalować i skompilować bibliotekę. Narzędzie vcpkg obsługuje dużą i rosnącą listę bibliotek innych firm oraz ustawia wszystkie właściwości konfiguracji i zależności wymagane do pomyślnego kompilowania w ramach projektu.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla