mam kawałek kodu, który ma następującą linięnazwa 64bit maglowania dla C++
#pragma comment(linker, "/include:[email protected]")
Projekt, który wykorzystuje ten kod działa poprawnie, gdy mogę skompilować kod przy użyciu C++ Visual Studio 2010 z typu konfiguracja 32bit (I jestem również na 32-bitowym komputerze z systemem Windows).
pojawia się błąd łącza, kiedy zmienić maszynę do 64bit i użyć konfiguracji x64 który kompilacji z C++ Visual Studio 2010.
Czy C++ przekręcona nazwa inna dla 32bit vs 64bit? Jeśli tak, to gdzie mogę znaleźć 64-bitowe konwencje mangowania nazw C++?
To może być zupełnie inaczej ... Jeśli 'test' otrzyma trzy parametry wskaźnika, zmieni się z" 12 "na" 24 "... Ah, również nie jest to funkcja C++. Wydaje się, że jest to funkcja 'stdcall' C. – ybungalobill
gdzie mogę się o tym dowiedzieć. Jestem nowy w tych koncepcjach. również myślę, że moje jest stdcall i przykład podałeś jest dla cdecl. Mam kilka innych połączeń, takich jak komentarz #pragma (linker, "/ export: test @ 0 = test"), jak powinienem je zmienić. odniesienie, które je wyjaśni, będzie wspaniałe. – user1612986
Istnieje wiele dokumentów dotyczących mangowania nazw w C++ (jeden z nich podłączyłem). Wygląda na to, że używasz extern "C" _stdcall dla eksportu, co, jak pokazano powyżej, różni się w 32.vs.64-bitach. Są artykuły dosłownie na całym MS i Wiki. Chociaż związane z VB, podoba mi się [ten post] (http://msdn.microsoft.com/en-us/library/dt232c9t (v = vs.71) .aspx), ponieważ robi to przyzwoicie. Tak czy inaczej, będziesz musiał oczyścić #pragmas na #ifdef WIN64 i albo zaimportować lub wyeksportować odpowiednie nazwy, obawiam się. – WhozCraig