2015-10-13 40 views
1

我正在對OPC(OLE過程控制)客戶端程序,使用異步CALLBACK方法從PLC獲取數據使用KepServer.But我遇到問題:_pAtlModule指針爲空當我嘗試使用CComObject函數CreateInstance

CComObject<COPCDataCallback>* pCOPCDataCallback; // Pointer to Callback Object 

// Create Instance of Callback Object using an ATL template 
CComObject<COPCDataCallback>::CreateInstance(&pCOPCDataCallback); 

,然後將它停在這裏:

_pAtlModule->Lock(); 

這是在atlcom.h

如何解決這個問題的任何想法?

回答

2

當您使用ATL classesCComObject,假設你有一個ATL項目,在它定義的「ATL模塊」級,基於對EXE應用程序,如CAtlExeModuleT

由於沒有定義模塊類/實例,所以沒有初始化全局內部變量_pAtlModule,因此存在問題。您需要添加模塊類。

一個添加ATL支持的方法是使用IDE,通常如果你現有的項目是基於MFC:

另一種方法是添加CAppModule實例,如果您的項目使用WTL:

那麼第三種方式是使用Visual Studio創建嚮導匹配的類型(EXE或DLL)的一個新的乾淨的ATL項目,並圍繞檢查代碼CAtlDllModuleTCAtlExeModuleT類,然後重複,在現有的項目。

+0

非常感謝你!你爲我做了一件大好事! – liyang

相關問題