C++ 使用Visual Studio 2013调用Init方法

C++ 使用Visual Studio 2013调用Init方法,c++,visual-studio-2013,atl,C++,Visual Studio 2013,Atl,如何使用最新的编译器调用Init_ATL_OBJMAP_ENTRY*p、HINSTANCE h、UINT nServiceNameID CServiceModule _Module; OBJECT_ENTRY_AUTO(__uuidof(TestObj), CTestObj) //... inline void CServiceModule::Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID) { CComModule

如何使用最新的编译器调用Init_ATL_OBJMAP_ENTRY*p、HINSTANCE h、UINT nServiceNameID

CServiceModule _Module;
OBJECT_ENTRY_AUTO(__uuidof(TestObj), CTestObj)
//...
inline void CServiceModule::Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID)
{
    CComModule::Init(p, h);

    m_bService = TRUE;

    LoadString(h, nServiceNameID, m_szServiceName, sizeof(m_szServiceName) / sizeof(TCHAR));

    // set up the initial service status
    m_hServiceStatus = NULL;
    m_status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
    m_status.dwCurrentState = SERVICE_STOPPED;
    m_status.dwControlsAccepted = SERVICE_ACCEPT_STOP;
    m_status.dwWin32ExitCode = 0;
    m_status.dwServiceSpecificExitCode = 0;
    m_status.dwCheckPoint = 0;
    m_status.dwWaitHint = 0;
}
我已尝试使用_Module.InitCTestObj、hInstance、IDS\u SERVICENAME;,但这行不通。我收到一个错误,一个CTestObj说CTestObj是未定义的。当我添加OBJECT\u ENTRY\u AUTO\uuidofBeeperObj,CBeeperObj时,我得到了以下错误C2065:'CreateInstance':未声明的标识符

PS:我正在使用Visual Studio 2013


有什么好主意吗?

请显示您试图调用它的范围/代码。CTestObj undefined表示您试图传递一个尚未定义的对象,您调用的函数本身没有问题。@OMGtechy,我没有提到吗_Module.InitCTestObj,hInstance,IDS\u SERVICENAME;CTestObj已经存在,但是当我尝试调用它时,我会遇到这个错误。你需要向我展示它周围的代码,因为这对它有很大的影响。例如,我需要检查您是否定义了_Module和CTestObject,以便同一范围内的所有代码都会有帮助。@OMGtechy,我已经编辑了我的文章。只需将Init的第一个参数传递NULL即可。由OBJECT\u ENTRY\u AUTO引入的条目将自动拾取,并且不需要显式地传入AUTO。