Otrzymuję ten dziwny błąd w niektórych rzeczach, z których korzystałem od dłuższego czasu. To może być coś nowego w Visual Studio 2010, ale nie jestem pewien.
Próbuję wywołać niezmienioną funkcję napisaną w C++ z C#.
Z tego co czytałem w internecie, a sam komunikat o błędzie nie ma to coś wspólnego z faktem, że podpis w moim pliku C# nie jest taki sam jak ten z C++, ale naprawdę nie mogę go zobaczyć.
Przede to wszystko jest moje unamanged funkcja poniżej:Wywołanie funkcji PInvoke "[...]" spowodowało asymetrię stosu
TEngine GCreateEngine(int width,int height,int depth,int deviceType);
A oto moja funkcja w C#:
[DllImport("Engine.dll", EntryPoint = "GCreateEngine", CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr CreateEngine(int width,int height,int depth,int device);
Kiedy debugowania w C++ widzę wszystkie argumenty po prostu w porządku, tak więc mogę tylko myślę, że ma to coś wspólnego z transformacją z TEngine (która jest wskaźnikiem do klasy o nazwie CEngine) na IntPtr. Użyłem tego wcześniej w VS2008 bez problemu.
Witam wszystkich, mam do czynienia z samym problemem, ale z Visual Studio 2013. Dodałem bezpośrednio odniesienie C++ dll do mojego projektu C#, który działał dobrze w 2010 roku, ale nie w 2013 roku. Wspomniałem również CallingConvention.Cdecl – Finisher001