首先我为任何错误道歉,英语不是我的母语。
这是我的问题:我编写了一个导出从 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),我将 DLL 编译为扩展 DLL,结果相同。
提前致谢。
问候,
尼尔