Un appel à PInvoke fonction '[...]' a déséquilibré la pile

J'obtiens cette erreur bizarre sur certains trucs que j'ai utilisé pendant un bon moment. Il peut être une chose nouvelle dans Visual Studio 2010, mais je ne suis pas sûr.

Je suis en train d'appeler un unamanged fonction écrite en C++ C#.

De ce que j'ai lu sur internet et le message d'erreur lui-même, il a quelque chose à voir avec le fait que la signature dans mon fichier C# n'est pas la même que celle de C++, mais je ne peux vraiment pas le voir.

Tout d'abord c'est mon unamanged fonction ci-dessous:

TEngine GCreateEngine(int width,int height,int depth,int deviceType);

Et voici ma fonction en C#:

[DllImport("Engine.dll", EntryPoint = "GCreateEngine", CallingConvention = CallingConvention.StdCall)]  
        public static extern IntPtr CreateEngine(int width,int height,int depth,int device);

Quand je debug en C++, je vois tous les arguments que l'on vient fine donc je ne peux que penser qu'il a quelque chose à voir avec la transformation de TEngine (qui est un pointeur vers une classe nommée CEngine) à IntPtr. J'ai utilisé cette avant dans VS2008 sans problème.

  • Salut à tous, je suis confronté à la même question, mais avec Visual studio 2013. J'ai ajouté directement référence de dll c++ pour mon projet c# qui fonctionnait bien, en 2010, mais pas en 2013. J'ai également mentionné CallingConvention.Cdecl
InformationsquelleAutor Sanctus2099 | 2010-05-31