[英]'Bad file mode' error OPEN statement read/write to serial (COM) port using 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.