Всем привет.
Есть библиотека для фокса.
библиотека находится в файле ping.c
Понадобилось изменить кое-что.
Дописал код:
HANDLE hEvent;
hEvent = CreateEvent (NULL, TRUE, FALSE, "StopThreadEvent");
Пошли ошибки компиляции:
D:\Vfp8\pingcom\Ping.c(105) : error C2275: 'HANDLE' : illegal use of this type as an expression
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winnt.h(207) : see declaration of 'HANDLE'
D:\Vfp8\pingcom\Ping.c(105) : error C2146: syntax error : missing ';' before identifier 'hEvent'
D:\Vfp8\pingcom\Ping.c(105) : error C2065: 'hEvent' : undeclared identifier
Поменял имя файла на СРР
Компилиреут нормально, но ругается на строку, где я вынимаю передаваемые параметры
_StrCpy( (char FAR *) pszMachineName,_HandToPtr(parm->p[0].val.ev_handle) );
Ругается приблизительно так:
Еrror C2664: '_StrCpy' : cannot convert parameter 2 from 'void *' to 'char
*'
Conversion from 'void*' to pointer to non-'void' requires an
explicit cast
Переменная pszMachineName объявлена как char pszMachineName[255];
Мне бы либо СРР отладить, либо С. Плииииз (
Александр
Prosto Kva
Re: Типы
От:
Аноним
Дата:
06.07.04 11:52
Оценка:
Здравствуйте, Prosto kva, Вы писали:
PK>_StrCpy( (char FAR *) pszMachineName,_HandToPtr(parm->p[0].val.ev_handle) );
Может так?
_StrCpy( (char FAR *) pszMachineName,(char*)(_HandToPtr(parm->p[0].val.ev_handle)) );
А>_StrCpy( (char FAR *) pszMachineName,(char*)(_HandToPtr(parm->p[0].val.ev_handle)) );
А>
Спасибо, именно так.
Осталось ещё две строчки. Думал, что ответ распространится и на них, но нет, Не подошёл
icmp_data = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, MAX_PACKET);
recvbuf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,MAX_PACKET);
Ругается так:
D:\Vfp8\pingcom\Ping.cpp(205) : error C2440: '=' : cannot convert from 'void *' to 'char *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
D:\Vfp8\pingcom\Ping.cpp(206) : error C2440: '=' : cannot convert from 'void *' to 'char *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
Здравствуйте, Prosto kva, Вы писали:
PK>icmp_data = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, MAX_PACKET); PK>recvbuf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,MAX_PACKET); PK>Ругается так: PK>D:\Vfp8\pingcom\Ping.cpp(205) : error C2440: '=' : cannot convert from 'void *' to 'char *' PK> Conversion from 'void*' to pointer to non-'void' requires an explicit cast PK>D:\Vfp8\pingcom\Ping.cpp(206) : error C2440: '=' : cannot convert from 'void *' to 'char *' PK> Conversion from 'void*' to pointer to non-'void' requires an explicit cast
Ругается, потому что HeapAlloc() возвращает указатель типа void*, и его надо явно привести к типу, переменных icmp_data и recvbuf.
Извините, думал, что закрыл тему.
Компилируется без ошибок, но неможет прорезолвить
Compiling...
Ping.cpp
Linking...
Creating library Release/VFPPing.lib and object Release/VFPPing.exp
winapims.lib(apimain.obj) : error LNK2001: unresolved external symbol __FoxTable
Это следующие строчки:
FoxTable _FoxTable =
{
(FoxTable FAR *)0, sizeof(myFoxInfo) / sizeof(FoxInfo), myFoxInfo
};
Описание
#include <pro_ext.h>
Александр