簡體   English   中英

調試vb6程序時出現錯誤錯誤的調用約定

[英]Error Bad Calling Convention when debugging vb6 program

我有一個標准的VB 6 exe(郵件查看器)。
該程序具有指向cobol DLL的“鏈接”:

Declare Sub InkMvwMail Lib "inkvwm" Alias "INKMVWMAIL" ...

從Windows啟動普通exe時,

一切正常,

但是,當我想調試對Visual Studio 6.0(SP6)(在Windows XP中)的cobol DLL入口點的調用時,我得到了

"Error 49, Bad Calling Convention"

感謝您的任何幫助

沃爾夫岡

一切正常,

不,它只是那樣 一切都不好,Cobol函數被設計為可以從C程序中調用。 它使用了錯誤的調用約定,即cdecl而不是stdcall。 由此引起的堆棧不平衡會導致極難診斷運行時故障,例如局部變量神秘地具有錯誤的值,並包括為此站點命名的硬崩潰。

當您從IDE運行時,調試器將執行額外的檢查,以驗證整個函數調用中堆棧指針是否已正確還原。 否,因此生成錯誤49診斷。

您需要遵循此知識庫文章中的指導。 在VB6中無法解決此問題,這需要用另一種可以進行cdecl調用的語言(如C或C ++)編寫一個輔助函數。 KB文章顯示了這樣一個函數的外觀,盡管他們故意給它一個錯誤的約定以演示該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM