相关疑难解决方法(0)

pinvokestackimbalance - 如何修复此问题或将其关闭?

我刚从vs2008切换到vs2010.完全相同的解决方案,除了现在每次调用C++ dll都会产生'pinvokestackimbalance'异常.

此异常在2008年不会被触发.我可以完全访问C++ dll和调用应用程序.pinvoke似乎没有任何问题,但是这个问题使调试其他问题变得不可能; IDE经常停下来告诉我这些事情.

例如,这是C#签名:

    [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);
Run Code Online (Sandbox Code Playgroud)

这是C++方面的样子:

#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);

}
Run Code Online (Sandbox Code Playgroud)

vs2010和vs2008之间有什么不同会导致这些异常被抛出?我应该在DllImport指令中添加一组不同的参数吗?

c# c++ pinvoke visual-studio-2010 visual-studio

73
推荐指数
3
解决办法
6万
查看次数

标签 统计

c# ×1

c++ ×1

pinvoke ×1

visual-studio ×1

visual-studio-2010 ×1