4
我遇到了一些麻煩創建一個COM DLL我的IClassFactory的實現如下所示:錯誤C2143:語法錯誤:缺少';'之前「__stdcall‘
include <windows.h>
#include <ObjBase.h>
#include "AddObj.h"
#include "AddObjFactory.h"
HRESULT __stdcall CAddFactory::CreateInstance(IUnknown* pUnknownOuter,
const IID& iid, void** ppv)
{
if (pUnknownOuter) { return CLASS_E_NOAGGREGATION; }
CAddObj* pObject = new CAddObj();
if (pObject == NULL)
{
return E_OUTOFMEMORY;
}
return pObject->QueryInterface(iid, ppv);
}
HRESULT __stdcall CAddFactory::LockServer(BOOL bLock)
{
return E_NOTIMPL;
}
我的問題是,Visual Studio中總是說’錯誤C2143:語法錯誤:缺少」 ;」在第6行的'__stdcall'之前(還有更多的行),我已經google了一下,我發現我必須包含windows.h,但這並不能解決我的問題......任何人都知道我的代碼有什麼問題,或者我所包括要解決的問題,我通過編譯頭文件得到同樣的錯誤:
#include <Windows.h>
#include <ObjBase.h>
class CAddFactory : public IClassFactory
{
public:
HRESULT __stdcall QueryInterface(REFIID riid, void **ppObj);
ULONG __stdcall AddRef();
ULONG __stdcall Release();
HRESULT __stdcall CreateInstance(IUnknown* pUnknownOuter,
const IID& iid, void** ppv);
HRESULT __stdcall LockServer(BOOL bLock);
private:
long m_nRefCount;
}
順便說一句,該代碼是基於codeguru教程
*「編譯頭文件」*?多奇怪。 (並參見Helix的答案) – WhozCraig