Informacje wewnętrzne pomocy technicznej firmy Microsoft

Nr błędu: 101959 (Visual Studio)

Podsumowanie

Podczas tworzenia biblioteki DLL przy użyciu 64-bitowej wersji programu Microsoft Visual C++ kompilator i łączenie, może zostać wyświetlony Linker numer błędu LNK4197, jeśli funkcja została zadeklarowana na wywóz więcej niż jeden raz.

Symptomy

Program łączący dane wyjściowe mogą być podobne do następujących:

C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll  Sample.objSample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification   Creating library Sample.lib and object Sample.exp 

Przyczyna

Program łączący numer błędu LNK4197 jest generowany, gdy funkcja została zadeklarowana na wywóz więcej niż jeden raz. Funkcja jest zadeklarowana na wywóz w jednym z następujących sposobów:

  • Funkcja jest zadeklarowana za pomocą słowa kluczowego __declspec(dllexport) w pliku źródłowego C:

    __declspec(dllexport) int DllSample() {   return 42;}
  • Funkcja jest zadeklarowana za pomocą definicji modułów (. Plik DEF):

    EXPORTS   DllSample

Najczęściej występuje ten błąd łączenie po słowie kluczowym __declspec(dllexport) i. Plik DEF są używane do definiowania tej samej nazwie funkcji w. Projekt biblioteki DLL.

Rozwiązanie

Aby rozwiązać ten problem, zdefiniować eksportowanych funkcji tylko jeden raz, przy użyciu słowa kluczowego __declspec(dllexport) lub za pomocą. Plik DEF. Nie należy używać obu tych metod.

Stan

To zachowanie jest zgodne z projektem.

Więcej informacji

Deklarowanie funkcji na wywóz więcej niż jeden raz mogą nie dawać błędu program łączący, który jest opisany w sekcji "Symptomy" tego artykułu w 32-bitowych wersjach systemu Microsoft Windows C++ kompilator i łączenie. Firma Microsoft zaleca jednak zdefiniować funkcję wywozu tylko jeden raz w zarówno 32-bitowe i 64-bitowych wersjach systemu Windows C++ kompilator i łączenie.

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Jak zadowalająca jest jakość tłumaczenia?
Co wpłynęło na Twoje wrażenia?

Dziękujemy za opinię!

×