Zweite C-Bindung für überladene Funktion



  • Bei folgendem Code bekommen ich diese Fehlermeldung:

    1>c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\memory(996) : error C2733: Zweite C-Bindung für überladene Funktion '_InterlockedCompareExchange_np' nicht zulässig
    1> c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\memory(995): Siehe Deklaration von '_InterlockedCompareExchange_np'

    #include "search.h"
    
    #include <cassert>
    #include <cstdio>  // printf, fflush
    
    #include <vector>  // Hier scheint der Fehler zu liegen.
    
    #include "basics.h"
    #include "eval.h"
    #include "history.h"
    #include "move_list.h"
    #include "option.h"
    #include "system_time.h"
    #include "transposition_table.h"
    #include "value.h"
    

    Erst durch Auskommentieren von vector kompiliert alles wieder.

    Woran könnte das liegen?

    Kompiliert mit VS 2008 SDK v6.0A. VS 2013 Beta ist auch auf dem System installiert.

    Der Fehler verschwindet auch, wenn ich das include <vector> an den Anfang der include-Liste setzte. Vorkompilierte Header verwende ich nicht.



  • Du versuchst wohl irgendwo im C-Linkage eine Funktion zu überladen.

    extern "C"{
        void f();
        void f(int); // das knallt, weil C-Linkage
    }
    


  • Nein, solche Konstrukte verwende ich in dieser Anwendung keine. Es handelt sich hier um eine C++ Konsolanwendung mit diversen Standardbibliotheken:

    cstdio, cstdlib, cassert, cstring, cctype

    und

    string, vector

    Ausserdem tritt der Fehler nicht in meinem Code auf:

    C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\memory



  • Ok.
    Kuck mal hier, eventuell hilft Dir das weiter.

    Andernfalls passe ich.



  • Danke!

    Interessanterweise deckt sich das mit meinem Problem. Ich inkludiere auch <intrin.h> an einer anderen Stelle (für popcount und bitscan).



  • #include <intrin.h>
    

    Durch deaktivieren obigen Includes lässt sich der Fehler beheben.

    Da scheint es Inkompatibilitäten zu geben.


Anmelden zum Antworten