ich ein Stück Code haben, der die folgende Zeile hat64-Bit-Namen für c Mangeln ++
#pragma comment(linker, "/include:[email protected]")
Das Projekt, das diesen Code verwendet funktioniert gut, wenn ich den Code unter Verwendung von C++ Visual Studio 2010 mit Konfigurationstyp 32bit (I kompilieren Bin auch auf einer 32 Bit Windows Maschine).
Ich erhalte einen Verbindungsfehler, wenn ich die Maschine auf 64-Bit ändern und x64-Konfiguration, die mit C Kompilieren verwenden ++ Visual Studio 2010.
C++ Name für 32bit vs 64bit verschiedene Mangeln? Wenn ja, wo finde ich die 64-Bit-C++ - Namens-Mangling-Konventionen?
Es kann eigentlich ganz anders sein ... Wenn 'test' drei Zeigerparameter empfängt, ändert es sich von' 12' nach '24' ... Ah, auch dies ist keine C++ Funktion. Es scheint eine 'stdcall' C Funktion zu sein. – ybungalobill
wo kann ich darüber lernen. Ich bin neu in diesen Konzepten. ich denke auch, dass meins ein stdcall ist und das Beispiel, das du gabst, ist für cdecl. Ich habe einige andere Anrufe wie #pragma Kommentar (Linker, "/ Export: Test @ 0 = Test") Wie sollte ich diese ändern. Eine Verdeutlichung dieser wird großartig sein. – user1612986
Es gibt eine Vielzahl von Dokumenten über C++ - Name Mangling (ich habe Sie eine von ihnen verknüpft). Sie scheinen extern "C" _stdcall für Ihre Exporte zu verwenden, die sich, wie oben gezeigt, in 32.vs.64-Bit unterscheiden. Es gibt Artikel buchstäblich überall in MS und Wiki. Obwohl VB-bezogen, mag ich [diesen Beitrag] (http://msdn.microsoft.com/en-us/library/dt232c9t (v = vs.71) .aspx), da es eine anständige Arbeit davon macht, darüber zu sprechen. Auf die eine oder andere Weise müssen Sie Ihre #pragmas auf #ifdef WIN64 aufräumen und die entsprechenden Namen importieren oder exportieren, fürchte ich. – WhozCraig