I have below class
class Cdata12Mnt
{
public:
char IOBname[ID1_IOB_PIOTSUP-ID1_IOB_TOP][BOADNAM_MAX + 4];
char ExIOBname[ID1_MAX_INF-ID1_EXIOB_U1TOP][BOADNAM_MAX + 4];
char cflpath[256];
char basetext[256];
UINT database[ID1_MAX_INF];
int State;
public:
char SelectPath[256];
public:
int GetIOBName(int slt,char *Name);
Cdata12Mnt(char *SelectPath);
virtual ~Cdata12Mnt();
int GetValue(int id);
int GetState() { return State; }
};
And I have function as below
Cdata12Mnt::Cdata12Mnt(char *SelectPath)
{
SCTReg reg;
char buf[256], *cpnt, *npnt, *bpnt1, *bpnt2;
char *startcode[] = {"CNTL_CODE ","SEGMENT "};
char *stopcode = {"END_CNTL_CODE "};
FILE *fp;
int ii, infl;
State = 0;
for (ii = 0; ii < (ID1_IOB_PIOTSUP - ID1_IOB_TOP); ii++) {
strcpy(IOBname[ii], "");
}
for (ii = 0; ii < (ID1_MAX_INF-ID1_EXIOB_U1TOP); ii++) {
**strcpy(ExIOBname[ii], "");**
}
sprintf(cflpath, "%s\%s", SelectPath, CDATAFL);
if ((fp = fopen(cflpath,"r"))!=NULL) {
for (ii = 0, infl = 0; fgets(buf, 256, fp) != NULL;) {
if (infl == 0 && strncmp(buf, startcode[0], strlen(startcode[0])) == 0) {
if ((cpnt = strchr(&buf[strlen(startcode[0])],*startcode[1])) != NULL) {
if (strncmp(cpnt,startcode[1], strlen(startcode[1])) == 0) {
infl = 1;
continue;
}
}
}
if (infl == 0) {
continue;
}
if (strncmp(buf,stopcode,strlen(stopcode))==0) {
if (ii == ID1_EXIOB_U1TOP) {
for (int nDataNumber = ii; nDataNumber < ID1_MAX_INF; nDataNumber++) {
database[nDataNumber] = 0;
}
}
infl = 0;
continue;
}
if (strncmp(&buf[14], " DD ", 4) == 0) {
if ((cpnt=strchr(buf, ';')) != NULL) {
*cpnt = '';
}
if (ii >= ID1_IOB_TOP && ii < ID1_IOB_PIOTSUP) {
if ((bpnt1 = strchr(cpnt + 1,'(')) != NULL && (bpnt2=strchr(cpnt + 1,')'))!=NULL && bpnt1 < bpnt2) {
*bpnt2 = '';
*(bpnt1 + BOADNAM_MAX + 1) = '';
strcpy(IOBname[ii-ID1_IOB_TOP], bpnt1 + 1);
}
}
if (ii >= ID1_EXIOB_U1TOP && ii < ID1_MAX_INF) {
if ((bpnt1 = strchr(cpnt + 1, '(')) != NULL && (bpnt2=strchr(cpnt+1,')'))!=NULL && bpnt1 < bpnt2) {
*bpnt2='';
*(bpnt1+BOADNAM_MAX+1)='';
strcpy(ExIOBname[ii-ID1_EXIOB_U1TOP], bpnt1 + 1);
}
}
for (cpnt = &buf[18]; cpnt != NULL;) {
if ((npnt=strchr(cpnt, ',')) != NULL)
*npnt='';
}
if (strchr(cpnt,'H')!=NULL) {
sscanf(cpnt,"%XH",&database[ii]);
} else {
database[ii]=atoi(cpnt);
}
ii++;
cpnt = npnt;
if (cpnt != NULL) {
cpnt++;
}
}
}
}
fclose(fp);
} else {
State=-1;
}
When I compile this function in Visual studio 2008, it gives me error at strcpy(IOBname[ii],"");
as below
error C2220: warning treated as error — no ‘object’ file generated
How to fix this error?
I have below class
class Cdata12Mnt
{
public:
char IOBname[ID1_IOB_PIOTSUP-ID1_IOB_TOP][BOADNAM_MAX + 4];
char ExIOBname[ID1_MAX_INF-ID1_EXIOB_U1TOP][BOADNAM_MAX + 4];
char cflpath[256];
char basetext[256];
UINT database[ID1_MAX_INF];
int State;
public:
char SelectPath[256];
public:
int GetIOBName(int slt,char *Name);
Cdata12Mnt(char *SelectPath);
virtual ~Cdata12Mnt();
int GetValue(int id);
int GetState() { return State; }
};
And I have function as below
Cdata12Mnt::Cdata12Mnt(char *SelectPath)
{
SCTReg reg;
char buf[256], *cpnt, *npnt, *bpnt1, *bpnt2;
char *startcode[] = {"CNTL_CODE ","SEGMENT "};
char *stopcode = {"END_CNTL_CODE "};
FILE *fp;
int ii, infl;
State = 0;
for (ii = 0; ii < (ID1_IOB_PIOTSUP - ID1_IOB_TOP); ii++) {
strcpy(IOBname[ii], "");
}
for (ii = 0; ii < (ID1_MAX_INF-ID1_EXIOB_U1TOP); ii++) {
**strcpy(ExIOBname[ii], "");**
}
sprintf(cflpath, "%s\%s", SelectPath, CDATAFL);
if ((fp = fopen(cflpath,"r"))!=NULL) {
for (ii = 0, infl = 0; fgets(buf, 256, fp) != NULL;) {
if (infl == 0 && strncmp(buf, startcode[0], strlen(startcode[0])) == 0) {
if ((cpnt = strchr(&buf[strlen(startcode[0])],*startcode[1])) != NULL) {
if (strncmp(cpnt,startcode[1], strlen(startcode[1])) == 0) {
infl = 1;
continue;
}
}
}
if (infl == 0) {
continue;
}
if (strncmp(buf,stopcode,strlen(stopcode))==0) {
if (ii == ID1_EXIOB_U1TOP) {
for (int nDataNumber = ii; nDataNumber < ID1_MAX_INF; nDataNumber++) {
database[nDataNumber] = 0;
}
}
infl = 0;
continue;
}
if (strncmp(&buf[14], " DD ", 4) == 0) {
if ((cpnt=strchr(buf, ';')) != NULL) {
*cpnt = '';
}
if (ii >= ID1_IOB_TOP && ii < ID1_IOB_PIOTSUP) {
if ((bpnt1 = strchr(cpnt + 1,'(')) != NULL && (bpnt2=strchr(cpnt + 1,')'))!=NULL && bpnt1 < bpnt2) {
*bpnt2 = '';
*(bpnt1 + BOADNAM_MAX + 1) = '';
strcpy(IOBname[ii-ID1_IOB_TOP], bpnt1 + 1);
}
}
if (ii >= ID1_EXIOB_U1TOP && ii < ID1_MAX_INF) {
if ((bpnt1 = strchr(cpnt + 1, '(')) != NULL && (bpnt2=strchr(cpnt+1,')'))!=NULL && bpnt1 < bpnt2) {
*bpnt2='';
*(bpnt1+BOADNAM_MAX+1)='';
strcpy(ExIOBname[ii-ID1_EXIOB_U1TOP], bpnt1 + 1);
}
}
for (cpnt = &buf[18]; cpnt != NULL;) {
if ((npnt=strchr(cpnt, ',')) != NULL)
*npnt='';
}
if (strchr(cpnt,'H')!=NULL) {
sscanf(cpnt,"%XH",&database[ii]);
} else {
database[ii]=atoi(cpnt);
}
ii++;
cpnt = npnt;
if (cpnt != NULL) {
cpnt++;
}
}
}
}
fclose(fp);
} else {
State=-1;
}
When I compile this function in Visual studio 2008, it gives me error at strcpy(IOBname[ii],"");
as below
error C2220: warning treated as error — no ‘object’ file generated
How to fix this error?
|
|
|
error: предупреждение обработано как ошибка — файл «object» не создан
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Full Member Рейтинг (т): 2 |
переношу код с проекта в проект вилазит такая ошибка
wchar_t ch0, ch1, ch2; ch0 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); <<<< ерор Сообщение отредактировано: NOCaut — 12.09.11, 13:20 |
like-nix |
|
Senior Member Рейтинг (т): 27 |
_tcstol,эта функция кажется в лонг конвертит судя по названию, к файлам наверное отношения не имеет. Цитата NOCaut @ 12.09.11, 13:14 strEncodedText Это что за объект? |
NOCaut |
|
Full Member Рейтинг (т): 2 |
Cstring strEncodedText; Но на другом моем проекте она ж работает Добавлено 12.09.11, 13:30 |
like-nix |
|
Senior Member Рейтинг (т): 27 |
NOCaut, напиши полный текст отчета компилятора об ошибке. |
NOCaut |
|
Full Member Рейтинг (т): 2 |
1>—— Построение начато: проект: WebCtrl, Конфигурация: Release UNICODE Win32 —— 1>Компиляция… 1>CntrEvnt2.cpp 1>.CntrEvnt2.cpp(28) : error C2220: предупреждение обработано как ошибка — файл «object» не создан 1>.CntrEvnt2.cpp(28) : warning C4244: =: преобразование ‘long’ в ‘wchar_t’, возможна потеря данных Сообщение отредактировано: NOCaut — 12.09.11, 13:33 |
like-nix |
|
Senior Member Рейтинг (т): 27 |
Возможно _tcstol не может сконвертить CSring во что-то не зная сигнатуры _tcstol трудно сказать во что. Добавлено 12.09.11, 13:36 |
maxim84_ |
|
Цитата Возможно _tcstol не может сконвертить CSring во что-то не зная сигнатуры _tcstol трудно сказать во что. _tcstol |
NOCaut |
|
Full Member Рейтинг (т): 2 |
щас проверим Добавлено 12.09.11, 13:38 Добавлено 12.09.11, 13:39
_tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); так компилится Добавлено 12.09.11, 13:41 |
like-nix |
|
Senior Member Рейтинг (т): 27 |
Ну а если сделать явное приведение? |
maxim84_ |
|
wchar_t* _result = 0; DWORD count = _tcstol( strEncodedText.Mid( i+1, 2 ), &_result, 16 ); Как-то так. |
NOCaut |
|
Full Member Рейтинг (т): 2 |
CString URLDecode( CString strEncodedText ) { CString strResult; wchar_t ch0, ch1, ch2; wchar_t wch; TCHAR tch; int i = 0; while( i<strEncodedText.GetLength() ) { tch = strEncodedText.GetAt(i); if( tch != _T(‘%’) ) { // a character not encoded strResult += tch; i++; } else { // a character encoded !! ch0 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); i += 3; if( ch0 < 0x80 ) // 1 byte for UTF-8 // 0xxx xxxx wch = ch0; else { if( strEncodedText.GetAt(i)!= _T(‘%’) ) // Error! continue; ch1 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); i += 3; if( ch0 < 0xe0 ) { // 2 byte for UTF-8 // 110x xxxx 10xx xxxx wch = ((ch0&0x1f)<<6) | (ch1&0x3f); } else { // 3 byte for UTF-8 if( strEncodedText.GetAt(i)!= _T(‘%’) ) // Error! continue; ch2 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); i += 3; // 1110 xxxx 10xx xxxx 10xx xxxx wch = ((ch0&0x0f)<<12) | ((ch1&0x3f)<<6) | (ch2&0x3f); } } strResult += wch; } } } return strResult; Добавлено 12.09.11, 13:48 |
trainer |
|
Отвечающие здесь — вы хоть сообщение об ошибке читаете? В настройках проекта стоит высокий уровень предупреждений — предупреждения рассматриваются как ошибки, соответственно компиляция не проходит. |
like-nix |
|
Senior Member Рейтинг (т): 27 |
trainer, |
NOCaut |
|
Full Member Рейтинг (т): 2 |
спасибо. а где ети настройки? |
trainer |
|
Нужно либо убрать источник предупреждения — [неявное] преобразование long в wchar_t с возможной потерей значащих разрядов, либо убрать ключик /WX, либо добавить /wd4244, либо с помощью #pragma warning подавить это предупреждение в этом конкретном месте. Сообщение отредактировано: trainer — 12.09.11, 14:00 |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- C/C++: Общие вопросы
- Следующая тема
[ Script execution time: 0,0612 ] [ 16 queries used ] [ Generated: 27.06.23, 10:21 GMT ]
У меня есть ниже класс:
class Cdata12Mnt
{
public:
char IOBname[ID1_IOB_PIOTSUP-ID1_IOB_TOP][BOADNAM_MAX + 4];
char ExIOBname[ID1_MAX_INF-ID1_EXIOB_U1TOP][BOADNAM_MAX + 4];
char cflpath[256];
char basetext[256];
UINT database[ID1_MAX_INF];
int State;
public:
char SelectPath[256];
public:
int GetIOBName(int slt,char *Name);
Cdata12Mnt(char *SelectPath);
virtual ~Cdata12Mnt();
int GetValue(int id);
int GetState() { return State; }
};
И у меня есть функция как ниже:
Cdata12Mnt::Cdata12Mnt(char *SelectPath)
{
SCTReg reg;
char buf[256], *cpnt, *npnt, *bpnt1, *bpnt2;
char *startcode[] = {"CNTL_CODE ","SEGMENT "};
char *stopcode = {"END_CNTL_CODE "};
FILE *fp;
int ii, infl;
State = 0;
for (ii = 0; ii < (ID1_IOB_PIOTSUP - ID1_IOB_TOP); ii++) {
strcpy(IOBname[ii], "");
}
for (ii = 0; ii < (ID1_MAX_INF-ID1_EXIOB_U1TOP); ii++) {
**strcpy(ExIOBname[ii], "");**
}
sprintf(cflpath, "%s%s", SelectPath, CDATAFL);
if ((fp = fopen(cflpath,"r"))!=NULL) {
for (ii = 0, infl = 0; fgets(buf, 256, fp) != NULL;) {
if (infl == 0 && strncmp(buf, startcode[0], strlen(startcode[0])) == 0) {
if ((cpnt = strchr(&buf[strlen(startcode[0])],*startcode[1])) != NULL) {
if (strncmp(cpnt,startcode[1], strlen(startcode[1])) == 0) {
infl = 1;
continue;
}
}
}
if (infl == 0) {
continue;
}
if (strncmp(buf,stopcode,strlen(stopcode))==0) {
if (ii == ID1_EXIOB_U1TOP) {
for (int nDataNumber = ii; nDataNumber < ID1_MAX_INF; nDataNumber++) {
database[nDataNumber] = 0;
}
}
infl = 0;
continue;
}
if (strncmp(&buf[14], " DD ", 4) == 0) {
if ((cpnt=strchr(buf, ';')) != NULL) {
*cpnt = '';
}
if (ii >= ID1_IOB_TOP && ii < ID1_IOB_PIOTSUP) {
if ((bpnt1 = strchr(cpnt + 1,'(')) != NULL && (bpnt2=strchr(cpnt + 1,')'))!=NULL && bpnt1 < bpnt2) {
*bpnt2 = '';
*(bpnt1 + BOADNAM_MAX + 1) = '';
strcpy(IOBname[ii-ID1_IOB_TOP], bpnt1 + 1);
}
}
if (ii >= ID1_EXIOB_U1TOP && ii < ID1_MAX_INF) {
if ((bpnt1 = strchr(cpnt + 1, '(')) != NULL && (bpnt2=strchr(cpnt+1,')'))!=NULL && bpnt1 < bpnt2) {
*bpnt2='';
*(bpnt1+BOADNAM_MAX+1)='';
strcpy(ExIOBname[ii-ID1_EXIOB_U1TOP], bpnt1 + 1);
}
}
for (cpnt = &buf[18]; cpnt != NULL;) {
if ((npnt=strchr(cpnt, ',')) != NULL)
*npnt='';
}
if (strchr(cpnt,'H')!=NULL) {
sscanf(cpnt,"%XH",&database[ii]);
} else {
database[ii]=atoi(cpnt);
}
ii++;
cpnt = npnt;
if (cpnt != NULL) {
cpnt++;
}
}
}
}
fclose(fp);
} else {
State=-1;
}
Когда я компилирую эту функцию в Visual Studio 2008, она выдает ошибку при strcpy(IOBname[ii],"");
как ниже.
ошибка C2220: предупреждение рассматривается как ошибка — файл объекта не создан
Как исправить эту ошибку?
21
Решение
Ошибка говорит о том, что предупреждение было обработано как ошибка. Поэтому ваша проблема — предупреждающее сообщение! Проверьте их и исправьте их.
Если вы не знаете, как их найти: откройте Error List
(View
> Error List
) и нажмите на Warning
,
23
Другие решения
Идти к project properties -> configurations properties -> C/C++ -> treats warning as error -> No (/WX-)
,
10
Это сообщение об ошибке очень запутанно. Я просто исправил другие «предупреждения» в своем проекте, и у меня действительно было только одно (простое):
предупреждение C4101: ‘i’: локальная переменная без ссылки
После того, как я прокомментировал это неиспользованным i
и скомпилировал его, другая ошибка исчезла.
5
Как примечание, вы можете включить / отключить отдельные предупреждения, используя #pragma
, Вы можете взглянуть на документацию Вот
Из документации:
// pragma_warning.cpp
// compile with: /W1
#pragma warning(disable:4700)
void Test() {
int x;
int y = x; // no C4700 here
#pragma warning(default:4700) // C4700 enabled after Test ends
}
int main() {
int x;
int y = x; // C4700
}
3
Это предупреждение о небезопасном использовании strcpy. Пытаться IOBname[ii]='';
вместо.
1
Я пытаюсь создать свой первый Пример COM, я создал проект VS 2012. Я получил ошибки в библиотеке, которые я решил, изменив _WIN32_WINNT
на 0x0601
для Windows 7 и, по-видимому, изменив _WIN32_IE
на 0x0800
в StdAfx.h
. Также я изменил _WIN32_WINNT
в Settings -> C/C++ -> Preprocessor
, и теперь я получаю ошибки, как показано ниже.
1>------ Build started: Project: COM, Configuration: Debug x64 ------
1> COMIntro.cpp
1>COMIntro.cpp(21): error C2220: warning treated as error - no 'object' file generated
1>COMIntro.cpp(21): warning C4100: 'envp' : unreferenced formal parameter
1>COMIntro.cpp(21): warning C4100: 'argv' : unreferenced formal parameter
1>COMIntro.cpp(21): warning C4100: 'argc' : unreferenced formal parameter
1> StdAfx.cpp
1> Generating Code...
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Это связано с моей версией Windows SDK 7.1 или с какой-то проблемой совместимости?
1 ответ
Я должен был сделать некоторые поиски в первую очередь. Я запутался между COM и несколькими другими новыми концепциями, которые я упустил из виду в обычных C++, что нужно и чего нельзя делать.
Я просто использовал кастинг. неиспользуемые переменные вызывали эту проблему
(void)argc;
(void)argv;
(void)envp;
Правильное решение Использование UNREFERENCED_PARAMETER
работает для меня.
-2
CMouse
7 Июн 2017 в 11:27
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 |
#include <ntddk.h> #include <initguid.h> // // Disable warning: nonstandard extension used : nameless struct/union // #pragma warning(push) #pragma warning(disable: 4201) #include <fwpsk.h> #include <fwpmk.h> #pragma warning(pop) #define LogDbg(fmt, ...) DbgPrintEx(DPFLTR_IHVDRIVER_ID, 0, "%s:%d "fmt"rn", __FUNCTION__, __LINE__, ##__VA_ARGS__) DEFINE_GUID( INSPECT_ALE_CONNECT_CALLOUT_V4, 0x76b743d4, 0x1249, 0x4614, 0xa6, 0x32, 0x6f, 0x9c, 0x4d, 0x08, 0xd2, 0x5a ); DEFINE_GUID( INSPECT_SUBLAYER, 0x2e207682, 0xd95f, 0x4525, 0xb9, 0x66, 0x96, 0x9f, 0x26, 0x58, 0x7f, 0x03 ); UINT32 g_aleConnectCalloutIdV4; FWPM_SESSION0 g_session = {0}; HANDLE g_hEngine; VOID ConnectClassify(const FWPS_INCOMING_VALUES0 *inFixedValues, const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, OUT VOID *layerData, const FWPS_FILTER0 *filter, UINT64 flowContext, OUT FWPS_CLASSIFY_OUT0 *classifyOut ) { ULONG RemoteAddr; USHORT RemotePort; UNREFERENCED_PARAMETER(inMetaValues); UNREFERENCED_PARAMETER(layerData); UNREFERENCED_PARAMETER(filter); UNREFERENCED_PARAMETER(flowContext); UNREFERENCED_PARAMETER(classifyOut); RemoteAddr = inFixedValues->incomingValue[ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_REMOTE_ADDRESS ].value.uint32; RemotePort = inFixedValues->incomingValue[ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_REMOTE_PORT ].value.uint16; LogDbg("Connect to 0x%.8lx:%lu", RemoteAddr, RemotePort); } NTSTATUS ConnectNotify( FWPS_CALLOUT_NOTIFY_TYPE notifyType, const GUID* filterKey, const FWPS_FILTER* filter ) { UNREFERENCED_PARAMETER(notifyType); UNREFERENCED_PARAMETER(filterKey); UNREFERENCED_PARAMETER(filter); return STATUS_SUCCESS; } NTSTATUS AddFilter(const wchar_t* filterName, const wchar_t* filterDesc, const GUID* layerKey, const GUID* calloutKey) { NTSTATUS status = STATUS_SUCCESS; FWPM_FILTER0 filter = {0}; FWPM_FILTER_CONDITION0 filterCondition[1] = {0}; // ULONG ip_addr = 0xD40CF388; //88.F3.0C.D4 (136.243.12.212) [url]www.stu**********[/url] ULONG ip_addr = 0x88F30CD4; filter.layerKey = *layerKey; filter.displayData.name = (wchar_t *)filterName; filter.displayData.description = (wchar_t *)filterDesc; filter.action.type = FWP_ACTION_CALLOUT_TERMINATING; filter.action.calloutKey = *calloutKey; filter.filterCondition = filterCondition; filter.subLayerKey = INSPECT_SUBLAYER; filter.weight.type = FWP_EMPTY; filter.rawContext = 0; filterCondition[0].fieldKey = FWPM_CONDITION_IP_REMOTE_ADDRESS; filterCondition[0].matchType = FWP_MATCH_EQUAL; filterCondition[0].conditionValue.type = FWP_UINT32; filterCondition[0].conditionValue.uint32 = ip_addr; LogDbg("Test message: 0x%X", ip_addr); filter.numFilterConditions = 1; status = FwpmFilterAdd0(g_hEngine, &filter, NULL, NULL); if (!NT_SUCCESS(status)) { LogDbg("FwpmFilterAdd0 Error 0x%X !", status); return status; } return status; } NTSTATUS RegisterAleClassifyCallout( const GUID* layerKey, const GUID* calloutKey, void* deviceObject, UINT32* calloutId ) { NTSTATUS status = STATUS_SUCCESS; FWPS_CALLOUT0 sCallout = {0}; FWPM_CALLOUT0 mCallout = {0}; FWPM_DISPLAY_DATA0 displayData = {0}; sCallout.calloutKey = *calloutKey; sCallout.classifyFn = ConnectClassify; sCallout.notifyFn = (FWPS_CALLOUT_NOTIFY_FN0)ConnectNotify; status = FwpsCalloutRegister0(deviceObject, &sCallout, calloutId); if (!NT_SUCCESS(status)) { LogDbg("FwpsCalloutRegister0 Error 0x%X !", status); return status; } displayData.name = L"Ale Classify Callout"; displayData.description = L"Intercepts connect"; mCallout.calloutKey = *calloutKey; mCallout.displayData = displayData; mCallout.applicableLayer = *layerKey; status = FwpmCalloutAdd0(g_hEngine, &mCallout, NULL, NULL); if (!NT_SUCCESS(status)) { LogDbg("FwpmCalloutAdd0 Error 0x%X !", status); return status; } status = AddFilter(L"Transport ALE Classify", L"Intercepts connect attempts", layerKey, calloutKey); if (!NT_SUCCESS(status)) { return status; } return status; } NTSTATUS RegisterCallouts(VOID* deviceObj) { NTSTATUS status = STATUS_SUCCESS; FWPM_SUBLAYER0 subLayer; RtlZeroMemory(&subLayer, sizeof(FWPM_SUBLAYER0)); subLayer.subLayerKey = INSPECT_SUBLAYER; subLayer.displayData.name = L"Transport Sub-Layer"; subLayer.displayData.description = L"Sub-Layer for use by Transport callouts"; subLayer.flags = 0; subLayer.weight = 0; status = FwpmSubLayerAdd0(g_hEngine, &subLayer, NULL); if (!NT_SUCCESS(status)) { LogDbg("FwpmSubLayerAdd0 Error 0x%X !", status); return status; } status = RegisterAleClassifyCallout(&FWPM_LAYER_ALE_AUTH_CONNECT_V4, &INSPECT_ALE_CONNECT_CALLOUT_V4, deviceObj, &g_aleConnectCalloutIdV4); if (!NT_SUCCESS(status)) { return status; } status = FwpmTransactionCommit0(g_hEngine); if (!NT_SUCCESS(status)) { LogDbg("FwpmTransactionCommit0 Error 0x%X !", status); return status; } return status; } //Close Engine in system static VOID CloseEngine(VOID) { NTSTATUS err; err = FwpmEngineClose0(g_hEngine); if (!NT_SUCCESS(err)) { LogDbg("FwpmEngineClose0 Error: 0x%X !", err); return; } } VOID TransactionAbort(VOID) { NTSTATUS err = STATUS_SUCCESS; err = FwpmTransactionAbort0(g_hEngine); if (!NT_SUCCESS(err)) { LogDbg("FwpmTransactionAbort0 Error: 0x%X !", err); return; } } //Open Engine in system static NTSTATUS RegEngine(VOID) { NTSTATUS err; g_session.flags = FWPM_SESSION_FLAG_DYNAMIC; err = FwpmEngineOpen0(NULL, RPC_C_AUTHN_WINNT, NULL, &g_session, &g_hEngine); if (!NT_SUCCESS(err)) { LogDbg("FwpmEngineOpen0 Error: 0x%X !", err); CloseEngine(); return err; } err = FwpmTransactionBegin0(g_hEngine, 0); if (!NT_SUCCESS(err)) { TransactionAbort(); LogDbg("FwpmTransactionBegin0 Error: 0x%X !", err); return err; } return err; } NTSTATUS DriverEntry(PDRIVER_OBJECT drvObject, PUNICODE_STRING regPath) { NTSTATUS status = STATUS_SUCCESS; DEVICE_OBJECT device; UNREFERENCED_PARAMETER(drvObject); UNREFERENCED_PARAMETER(regPath); // Register in system status = RegEngine(); if (!NT_SUCCESS(status)) { return status; } LogDbg("Engine register success!n"); // Register Callouts status = RegisterCallouts(&device); if (!NT_SUCCESS(status)) { return status; } LogDbg("Callouts register success!n"); return status; } |
Уважаемый гость, добро пожаловать на форум: CRYMOD.NET — Портал сообщества CryENGINE. Если вы здесь впервые, то, пожалуйста, прочитайте раздел Помощь. В этом разделе можно подробно ознакомится с функционалом данной системы. Что бы использовать все возможности системы, необходимо зарегистрироваться. Для этого пройдите по ссылке и узнайте подробнее о процессе регистрации.
В случае если вы уже зарегистрировались – войдите под своей учётной записью.
Основные ошибки компилятора
Пожалуйста пишите о ваших ошибках компилятора только в этой теме. Благодарю за сотрудничество
Внимание ! Нижеследующие ошибки чаще всего возникают из-зи неправильной версии Visual Studio. Если нижеописанные решения не помогли, попробуйте установить Visual Studio 2005 Professional, это должно помочь.
Общие проблемы:
- Cannot find afxres.h
Откройте GameDll.rc и замените afxres.h на windows.hКод
1 2
//#include "afxres.h" //закоментируйте afxres.h #include "windows.h"
- Fatal error RC1015: cannot open include file ‘windows.h’.
У вас не установлен Windows Platform SDK. Его можно скачать здесь: Download: Windows SDK for Windows Server 2008 and .NET Framework version 3.5 — Microsoft Download Center — Download Details
- (Visual Studio 2010) error C2440, utility (163)
Откройте NetHelpers.h и замените это:Код
1
return TNetMessageCallbackResult( ((cls*)p)->Handle##name( serialize, curSeq, oldSeq, pEntityId, pChannel ), NULL );
На это:
Код
1
return TNetMessageCallbackResult( ((cls*)p)->Handle##name( serialize, curSeq, oldSeq, pEntityId, pChannel ), reinterpret_cast<INetAtSyncItem*>(NULL) );
При загрузке CryCommon.vcproj Express Edition спрашивает хотите ли вы переконвертировать проект в формат Express Edition. Вызовет ли это проблемы совместимости ?
— Проблем не вызовет.
Cannot find afxres.h
Откройте GameDll.rc и замените afxres.h на windows.h
Вот оно что. Просто не то включение.
«Как лекарство не достигает своей цели, если доза слишком велика, так и порицание и критика — когда они переходят меру справедливости.» — Артур Шопенгауэр
«Самый длинный путь начинается с одного шага, а не поворота ключа в замке зажигания.» — Эдвард Эбби
М-да… В моём VC++ 2008 Express Edition:
1>d:gameselectronic artscrytekcrysismodscrysismodcodegamedll.rc(3) : error C2220: предупреждение обработано как ошибка — файл «object» не создан
1>d:gameselectronic artscrytekcrysismodscrysismodcodegamedll.rc(3) : warning C4627: #include «resource.h»: пропущен при поиске использования предкомпилированного заголовка
1>d:gameselectronic artscrytekcrysismodscrysismodcodegamedll.rc(10) : warning C4627: #include «windows.h»: пропущен при поиске использования предкомпилированного заголовка
1>d:gameselectronic artscrytekcrysismodscrysismodcodegamedll.rc(195) : fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву «#include «StdAfx.h»» в источник.
——————————————————————-
Сам уменьшил число ошибок до одной, этой:
1>d:gameselectronic artscrytekcrysismodscrysismodcodegamedll.rc(195) : fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву «#include «StdAfx.h»» в источник.
«Как лекарство не достигает своей цели, если доза слишком велика, так и порицание и критика — когда они переходят меру справедливости.» — Артур Шопенгауэр
«Самый длинный путь начинается с одного шага, а не поворота ключа в замке зажигания.» — Эдвард Эбби
Это сообщение было отредактировано 1 раз(а), последнее редактирование в «DCamer» (23 Сентябрь 2010, 00:37)
Вообще я советую скачать 2005 версию компилятора. Crysis под неё сделан. Ну а так попробуй добавить включение:
#include «StdAfx.h»
в заголовок
Чёрт. Это я случайно поставил на GameDll.rc «Компилятор C/C++».
«Как лекарство не достигает своей цели, если доза слишком велика, так и порицание и критика — когда они переходят меру справедливости.» — Артур Шопенгауэр
«Самый длинный путь начинается с одного шага, а не поворота ключа в замке зажигания.» — Эдвард Эбби
Это сообщение было отредактировано 2 раз(а), последнее редактирование в «DCamer» (23 Сентябрь 2010, 01:07)
Вот такая ошибка:
C:Program FilesMicrosoft Visual Studio 8VCincludeintrin.h(912) : error C2733: second C linkage of overloaded function ‘_interlockedbittestandset’ not allowed
C:Program FilesMicrosoft Visual Studio 8VCincludeintrin.h(912) : see declaration of ‘_interlockedbittestandset’
C:Program FilesMicrosoft Visual Studio8VCincludeintrin.h(913) : error C2733: second C linkage of overloaded function ‘_interlockedbittestandreset’ not allowed
C:Program FilesMicrosoft Visual Studio 8VCincludeintrin.h(913) : see declaration of ‘_interlockedbittestandreset’
#RaM Team#
Это сообщение было отредактировано 1 раз(а), последнее редактирование в «Medvedkoo» (5 Ноябрь 2010, 17:56)
Какая версия VS — 2005 или 2008 ?
При установке должно быть написано 2005. У тебя не установлены все файлы, в частности intrin.h отсутствует.
У тебя не установлены все файлы, в частности intrin.h отсутствует.
Ошибка указывает на строки в этом файле, значит файл на месте.
«Как лекарство не достигает своей цели, если доза слишком велика, так и порицание и критика — когда они переходят меру справедливости.» — Артур Шопенгауэр
«Самый длинный путь начинается с одного шага, а не поворота ключа в замке зажигания.» — Эдвард Эбби
Ребят, переставьте у себя там VS на Pro Edition и всё будет пучком
Огромное спасибо Alex и DCamer за то что мучались со мной в течение двух часов.
Проблема решилась установкой VS 2005 Pro.
Еще раз огромное спасибо.
#RaM Team#
На здоровье
Проблема решилась установкой VS 2005 Pro.
Всё таки значит версия Pro идеальна для компиляции. Пожалуй, надо обновить тему.
Не надо, также хороша компиляци на VS 2008 Express Edititon.
«Как лекарство не достигает своей цели, если доза слишком велика, так и порицание и критика — когда они переходят меру справедливости.» — Артур Шопенгауэр
«Самый длинный путь начинается с одного шага, а не поворота ключа в замке зажигания.» — Эдвард Эбби
Не надо, также хороша компиляци на VS 2008 Express Edititon.
Кому то хорошо раздеваться полностью чтобы пописать , однако это не есть оптимальное решение.
Edit: BASKA
Остроумен шалун
У меня стоит Визуал Студия 2005 и мне хватает.
До моих лет доживете, писать вообще не будете
первый блин, комом
2008Pro
1>LINK : fatal error LNK1000: Internal error during IncrBuildImage
1> Version 9.00.21022.08
где вы нарыли 2005 ?
смог найти только 2008 и 2010
1>LINK : fatal error LNK1000: Internal error during IncrBuildImage
1> Version 9.00.21022.08
Такая ошибка компоновщика встречается в Pro-версии MSVC++ 2008. Для исправления необходимо скачать и установите исправление отсюда, либо исправить порядок #include в своих заголовочных файлах, так, чтобы в начале шли стандартные заголовки, а после них собственные заголовочные файлы.
«Как лекарство не достигает своей цели, если доза слишком велика, так и порицание и критика — когда они переходят меру справедливости.» — Артур Шопенгауэр
«Самый длинный путь начинается с одного шага, а не поворота ключа в замке зажигания.» — Эдвард Эбби
Спасибки, пошел курить инфо )
Первый пост читай. Написано тебе Visual Studio 2005 Pro.
Написано тебе Visual Studio 2005 Pro.
Ну, и что? У меня 2008 и всё нормально теперь компилируется, ну… кроме x64.
«Как лекарство не достигает своей цели, если доза слишком велика, так и порицание и критика — когда они переходят меру справедливости.» — Артур Шопенгауэр
«Самый длинный путь начинается с одного шага, а не поворота ключа в замке зажигания.» — Эдвард Эбби
Ага, вот тебе и что. Какой толк от мода, если в него не на каждой системе поиграешь?
В 2005, на которой создавался движок, всё работает как надо и ничего не приходится выдумывать.
Ага, вот тебе и что. Какой толк от мода
Так он-то не компилирует, потому, что я круто порезанную версию качал. А найти 2005-й, так же сложно, как и найти иголку в стоге сена, я искал, так найти и не смог.
«Как лекарство не достигает своей цели, если доза слишком велика, так и порицание и критика — когда они переходят меру справедливости.» — Артур Шопенгауэр
«Самый длинный путь начинается с одного шага, а не поворота ключа в замке зажигания.» — Эдвард Эбби
description | title | ms.date | f1_keywords | helpviewer_keywords | ms.assetid |
---|---|---|---|---|---|
Learn more about: Compiler Error C2220 |
Compiler Error C2220 |
11/04/2016 |
C2220 |
C2220 |
d610802c-64d7-40ad-a2a6-0ed0b6815a6c |
Compiler Error C2220
warning treated as error — no object file generated
/WX tells the compiler to treat all warnings as errors. Because an error occurred, no object or executable file was generated.
This error only appears when the /WX flag is set and a warning occurs during compilation. To fix this error, you must eliminate every warning in your project.
To fix, use one of the following techniques
-
Fix the problems that cause warnings in your project.
-
Compile at a lower warning level—for example, use /W3 instead of /W4.
-
Use a warning pragma to disable or suppress a specific warning.
-
Don’t use /WX to compile.