Member 14900426 Ответов: 2

Проблема с объявлением и использованием глобальной константы


Could somebody help me ?

I had declared a constant and I need that be global

#define SVCNAME TEXT("testit")
...
SERVICE_TABLE_ENTRY DispatchTable[] =
{
{ SVCNAME, (LPSERVICE_MAIN_FUNCTION) testit },
{ NULL, NULL }
};

and I got:

Error C2440 'inicializando': no se puede realizar la conversión de 'const wchar_t [7]' a 'LPWSTR' easyDB C:\Software\test1\test2\dllmain.cpp 60
.

Что я уже пробовал:

I tried some ways of declare a global constant, also that be LPWSTR at time of the declaration. 

2 Ответов

Рейтинг:
0

Mircea Neacsu

Попробовать это:

wchar_t testit_name[] = "testit";
SERVICE_TABLE_ENTRY DispatchTable[] =
{
{ testit_name, (LPSERVICE_MAIN_FUNCTION) testit },
{ NULL, NULL }
};


По какой-то причине (вероятно, это определение не обновлялось уже много лет)
SERVICE_TABLE_ENTRY определяется как:
typedef struct _SERVICE_TABLE_ENTRYW {
  LPWSTR                   lpServiceName;
  LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
} SERVICE_TABLE_ENTRYW, *LPSERVICE_TABLE_ENTRYW;

Наверное, так и должно было быть
LCPWSTR lpServiceName

Установка строки с именем службы делает ее неконстантной, и компилятор больше не должен жаловаться.


Sandeep Mewara

+5

CPallini

5.

Рейтинг:
0

KarstenK

Напишите в заголовке:

extern const wchar_t *testit_name;
//in the cpp files
const wchar_t *testit_name = TEXT("testit");