Je viens de passé à vs2010 de vs2008. Exactement la même solution, sauf que maintenant chaque appel à une dll C++ donne un 'pinvokestackimbalance' exception.
Cette exception ne pas me faire virer en 2008. - Je avoir l'accès complet à la dll C++ et à l'application appelante. Il ne semble pas y avoir de problème avec la pinvoke, mais ce problème est de faire du débogage d'autres problèmes impossibles; l'IDE est d'arrêter constamment à me dire au sujet de ces choses.
Pour exemple, voici le C# signature:
[DllImport("ImageOperations.dll")]
static extern void FasterFunction(
[MarshalAs(UnmanagedType.LPArray)]ushort[] inImage, //IntPtr inImage,
[MarshalAs(UnmanagedType.LPArray)]byte[] outImage, //IntPtr outImage,
int inTotalSize, int inWindow, int inLevel);
Voici à quoi il ressemble sur le C++ côté:
#ifdef OPERATIONS_EXPORTS
#define OPERATIONS_API __declspec(dllexport)
#else
#define OPERATIONS_API __declspec(dllimport)
#endif
extern "C" {
OPERATIONS_API void __cdecl FasterFunction(unsigned short* inArray,
unsigned char* outRemappedImage,
int inTotalSize,
int inWindow, int inLevel);
}
Quelle est la différence entre vs2010 et vs2008 qui serait la cause de ces exceptions pour obtenir jetés? Dois-je ajouter un autre ensemble de paramètres pour la DllImport directive?