调用dll命令后发现堆栈错误

自己做了个DLL文件,配上软件上的DLL命令自定义表后为什么在测试的时候出现
错误代码:6
调用DLL命令后发现堆栈错误

VB6是吧。DLL文件中函数的调用方式应该为__stdcall
如果是默认的__cdecl就会出问题追问

是易语言做的

追答

……易语言没玩过。能把声明贴出来、vb中声明贴出来、并把dll文件传上来吗

最好说下哪个版本易语言,这玩意儿似乎要特别的运行库才能调试。我不确定能不能帮你把dll文件中的函数实际执行的调用方式和参数字节数找出来

追问

可是我没有用vb啊,我是用易语言写的

追答

调用和被调都是dll,那个消息框原来不是vb弹的吗
嗯,那不懂了,等会易语言的人来回答你

追问

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-08-16
多半是参数少填了
没按要求真写参数

调用DLL命令后发现堆栈错误怎么办
大多数 WINDOWS API 函数都是首先将函数的最后一个参数推入堆栈,然后由被调用的函数负责清理该堆栈。相反,许多 C-运行时 DLL 函数都被定义为按照方法参数在方法签名中出现的顺序将其推入堆栈,将堆栈清理工作交给调用者。幸运的是,要让 P\/INVOKE 调用工作只需要让外围设备理解调用约定即可。通常,从默...

易语言调用DLL命令后发现堆栈错误怎么解决
.DLL命令 GetWindowLongA, 整数型, "user32", "GetWindowLongA", , 从指定窗口的结构中取得信息 由nIndex决定。零表示出错。会设置GetLastError .参数 窗口句柄, 整数型, , 欲为其获取信息的窗口的句柄 .参数 属性, 整数型, , 欲取回的信息,可以是下述任何一个常数:;GWL_EXSTYLE:扩展窗口样式;...

易语言调用DLL命令后发现堆栈错误
应该是调用某个dll里的某个函数!调试一下是不是真的堆栈错误?一般的是在函数调用约定上出问题导致堆栈失衡

...在调用dll是也出现"调用DLL命令后发现堆栈错误"可否告知你是怎么解...
堆栈错误一x般是用因为6用stdcall调用cdecl的函数。 在调用cdecl的函数前插入z这句代码,就能自动平衡堆栈 --- 置入u代码 () --- 就是该成: --- 置入w代码 (“参考上e面,不a能用变量”) test () --- 最简单的还是改DLL的调用约定为2 __stdcall 如果你还要源代码,请直接在百度发消息...

易语言 dll 堆栈错误(多返回)
把N,M从局部变量和参数中去掉,另设N,M为全局变量。要多返回也好办,改返回值类型为文本型,最后,返回(到文本(N)+“,”+到文本(M))取回这个文本后用分割文本也好,用寻找文本也好,分出多返回值就行。

请问下~我在WPF中调用C\/C++ DLL后,触发任何一个控件方法,都会弹出堆栈...
应该是你申请了过多内存,看看是不是数组太大,或者在死循环中一直申请。

易语言调用C语言的dll堆栈错误!
调用方式是不是一样?易语言里面如果有能设置的话,把函数的调用方式设置成Cdecl或者 C语言方式 之类之类……没用过易语言不知道怎么设。不过多半是这个问题 实在找不到设置的地方的话,C语言代码改改,int add(int a,int b)改成 int __stdcall add(int a,int b)

我正在学习用c#调用vc6制作的dll。报错:调用导致堆栈不对称
栈不对称一般是调用约定不一致。比如VC6里面的声明时用__cdecl,而C#中没有指定__cdecl方式,则会出现以上错误。C#中导出接口时使用__cdecl的方法:[DllImport( "msvcrt.dll ", CharSet=CharSet.Ansi, CallingConvention=CallingConvention.Cdecl)]public static extern int Max(int a,...

调用dll命令后发现堆栈错误
VB6是吧。DLL文件中函数的调用方式应该为__stdcall 如果是默认的__cdecl就会出问题

调用NtShutDownSystem失败,求助
void WINAPI AutoChess(char board[][15], char color, int &x, int &y);4、Dll导出函数声明导出方法,与主模块中声明的导入方法不一致。使得调用时参数的传递中,破坏了调用堆栈,出现错误。解决方法:请确定导出方(Dll等)与导入方(Exe等)的声明保持一致。5、Dll导出函数本身破坏了调用堆栈。

相似回答