首先我對任何錯誤表示歉意,英語不是我的母語。當我創建一個DLL導出對象時出現Stackoverflow錯誤
這裏是我的問題:我已經寫了出口從CSocket類派生的類的DLL,一切正常,只是客戶端非常精細,隱式加載DLL,必須按以下實例化對象:
// Inside client constructor (client class scope object pointer)
CMyClass *m_lpMyObj = new MyClass;
但如果對象實例化這樣的:
// Inside the client class header file (client class scope object)
CMyClass m_myObj;
當我運行客戶端,我得到的錯誤:
Unhandled exception at 0x775015de in MyApp.exe: 0xC00000FD: Stack overflow.
同樣的問題,如果一個客戶端方法內我寫:
// Inside a client method (local object)
CMyClass myobj;
唯一的區別是所發生的誤差(當然)當調用該方法。
這裏類的一些細節:
// _AFXEXT defined for DLL project
#ifdef __cplusplus
extern "C" {
#endif
class CMyClass : public CSocket
{
DECLARE_DYNCREATE(CModbusConnector)
public:
AFX_EXT_CLASS CMyClass(); // Only some methods are exported
AFX_EXT_CLASS virtual ~CMyClass();
....
};
#ifdef __cplusplus
}
#endif
的DLL是一個CWinApp派生對象(常規DLL),I編譯DLL作爲擴展DLL具有相同的結果。
在此先感謝。
問候,
尼爾
'#ifdef __cplusplus'在這裏沒有意義:無論如何,該類不能用C調用約定導出。 – 2012-08-05 18:17:26
絕對正確,謝謝。 任何建議來解決這個問題? Ciao, Neil – Neil 2012-08-05 23:22:13