我用vc的ATL生成的一个服务程序,为了用vb写服务的内容,我用vb写了一个dll,并在vc中引用,然后编译完没有在服务中出现,而且还提示can't creat service。这是什么问题呢?高手指教!!

解决方案 »

  1.   

    那就是你的程序有问题了,先用vc应用程序调用vb的dll是否正确,然后再改成服务程序吧,这样可能找出问题所在的。本身vc调用vb的com比较麻烦,所以也说不清怎么回事。
      

  2.   

    调用的dll没有问题,我用数值测试过了.
    我查到问题出在哪里了,但是不知道怎么改,在下面的函数:
    SC_HANDLE hService = ::CreateService(
            hSCM, oProxy->getServiceName(), oProxy->getDisplayName(),
            SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
            SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
            oProxy->getServicePath( &bstrValue ), NULL, NULL, NULL, NULL, NULL);
    没有给hService赋到值.所以就出现这个问题了.我请教一下getServiceName(), getDisplayName(),getServicePath( &bstrValue ), 这些该怎么写才能正确赋值.
      

  3.   

    调用的dll没有问题,我用数值测试过了.
    我查到问题出在哪里了,但是不知道怎么改,在下面的函数:
    SC_HANDLE hService = ::CreateService(
            hSCM, oProxy->getServiceName(), oProxy->getDisplayName(),
            SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
            SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
            oProxy->getServicePath( &bstrValue ), NULL, NULL, NULL, NULL, NULL);
    没有给hService赋到值.所以就出现这个问题了.我请教一下getServiceName(), getDisplayName(),getServicePath( &bstrValue ), 这些该怎么写才能正确赋值./////////////////////
    在这个函数调用后面加上
    DWORD dw = GetLastError()
    看dw是多少,然后去查具体原因
      

  4.   

    很奇怪楼主为何用vb写dll给vc的程序调用