[問題] Debug Error! Module: File:i386\chkes …

看板C_and_CPP (C/C++)作者 (感冒>"<)時間15年前 (2010/12/29 01:32), 編輯推噓0(0014)
留言14則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, Gcc, Linux, ...) VC++ 6.0/Windows 7 問題(Question): 所有程式碼都可以build過 但是執行的時候卻出現Debug Error! 訊息是 Program: C:\...\...\xxx.exe Module: File:i386\chkesp.c Line:42 The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. 在網路上查了許久,發現這個問題應該是function的定義者和呼叫者使用不同的 calling convention所導致的。 但是calling convention一般應該都是採用預設值__cdecl,在開發專案時不會 特別去改這個部分才對。 奇怪的是,相同的程式碼在其他人的電腦裡,經過相同的建置程序,卻可以跑得起來。 不知道有沒有版友也有遇過相同的問題,想請教你們是如何解決的? 我在想是不是我的VC6的設定有誤@@? 如果有人可以幫我解答,那真是太感激了,最近被這問題搞得很頭大@@ 先在這裡謝過了<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.2.104 ※ 編輯: jason1981 來自: 114.47.2.104 (12/29 01:39)

12/29 09:55, , 1F
先去查是哪個function call出問題,可能是你呼叫DLL的時候
12/29 09:55, 1F

12/29 09:57, , 2F
用__cdecl的方式呼叫__stdcall的函式,改.h的宣告就好
12/29 09:57, 2F

12/29 10:00, , 3F
謝謝回答!但我比較覺得奇怪的是,照理說我的電腦會有這
12/29 10:00, 3F

12/29 10:01, , 4F
樣的問題,那別台電腦應該也會有這樣的問題,以同樣的程
12/29 10:01, 4F

12/29 10:01, , 5F
式碼來說@@?
12/29 10:01, 5F

12/29 10:15, , 6F
都會出現同樣的問題。
12/29 10:15, 6F

12/29 10:18, , 7F
但是別台電腦是OK的。所以我在想是我的電腦環境設定的問
12/29 10:18, 7F

12/29 10:19, , 8F
題,或是VC6設定的問題。真的是頭很大>"<
12/29 10:19, 8F

12/29 10:38, , 9F
先查查看是在呼叫哪個function的時候出問題吧,也可能是
12/29 10:38, 9F

12/29 10:38, , 10F
DLL在不同電腦上用不同的版本造成。
12/29 10:38, 10F

12/29 10:46, , 11F
恩,可能真的是這樣。想再請問一下有什麼方法可以查出是
12/29 10:46, 11F

12/29 10:47, , 12F
呼叫哪個function出問題嗎?因為IDE用的還不是很熟,並
12/29 10:47, 12F

12/29 10:48, , 13F
且錯誤訊息也沒有顯示是哪邊發生錯誤,只有文章中的訊息
12/29 10:48, 13F

12/29 11:36, , 14F
他有寫檔名跟行數。直接去看看吧
12/29 11:36, 14F
文章代碼(AID): #1D6XyMNo (C_and_CPP)
文章代碼(AID): #1D6XyMNo (C_and_CPP)