Error c2220 предупреждение обработано как ошибка

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?

Asked
8 years, 2 months ago

Viewed
8k times

I am Trying to develop a sample driver with the code:

#include <ntddk.h>
#include<wdm.h>
DRIVER_INITIALIZE DriverEntry;

NTSTATUS DriverEntry(__inout PDRIVER_OBJECT  DriverObject,__in PUNICODE_STRING RegistryPath)
{
    NTSTATUS status;
    DbgPrint("Driver has been loaded");
    return(STATUS_SUCCESS);
}

But it is showing me an error of

"error C2220: warning treated as error - no 'object' file generated"

please Help Me!!
Thanks

SSpoke's user avatar

SSpoke

5,63010 gold badges71 silver badges122 bronze badges

asked Apr 6, 2015 at 11:41

9

  • remove DRIVER_INITIALIZE DriverEntry; Line
  • Unreference registerObject using UNREFERENCED_PARAMETER
  • register filter using FltRegisterFilter See the definition on msdn
  • Use RtlInitUnicodeString
  • DbgPrint(«Driver Entry !!!!!»);

The Process should be followed May be this is giving you error because of UNREFERENCED_PARAMETER has not been used.

answered May 6, 2015 at 12:35

Digvijay Rathore's user avatar

0

У меня есть ниже класс:

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

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    error: предупреждение обработано как ошибка — файл «object» не создан

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    12.09.11, 13:14

      Full Member

      ***

      Рейтинг (т): 2

      переношу код с проекта в проект вилазит такая ошибка
      предупреждение обработано как ошибка — файл «object» не создан — как убрать ету ошибку

      ExpandedWrap disabled

        wchar_t ch0, ch1, ch2;

        ch0 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); <<<< ерор

      Сообщение отредактировано: NOCaut — 12.09.11, 13:20


      like-nix



      Сообщ.
      #2

      ,
      12.09.11, 13:25

        Senior Member

        ****

        Рейтинг (т): 27

        _tcstol,эта функция кажется в лонг конвертит судя по названию, к файлам наверное отношения не имеет.

        Цитата NOCaut @ 12.09.11, 13:14

        strEncodedText

        Это что за объект?


        NOCaut



        Сообщ.
        #3

        ,
        12.09.11, 13:28

          Full Member

          ***

          Рейтинг (т): 2

          Cstring strEncodedText;

          Но на другом моем проекте она ж работает :-?

          Добавлено 12.09.11, 13:30
          неработает само присвоение. сама строчка рабочая


          like-nix



          Сообщ.
          #4

          ,
          12.09.11, 13:31

            Senior Member

            ****

            Рейтинг (т): 27

            NOCaut, напиши полный текст отчета компилятора об ошибке.


            NOCaut



            Сообщ.
            #5

            ,
            12.09.11, 13:33

              Full Member

              ***

              Рейтинг (т): 2

              ExpandedWrap disabled

                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



              Сообщ.
              #6

              ,
              12.09.11, 13:34

                Senior Member

                ****

                Рейтинг (т): 27

                Возможно _tcstol не может сконвертить CSring во что-то не зная сигнатуры _tcstol трудно сказать во что.

                Добавлено 12.09.11, 13:36
                http://www.codeguru.com/forum/archive/index.php/t-369504.html
                Возможно второй параметр функции должен быть не NULL


                maxim84_



                Сообщ.
                #7

                ,
                12.09.11, 13:37

                  Цитата

                  Возможно _tcstol не может сконвертить CSring во что-то не зная сигнатуры _tcstol трудно сказать во что.

                  _tcstol


                  NOCaut



                  Сообщ.
                  #8

                  ,
                  12.09.11, 13:37

                    Full Member

                    ***

                    Рейтинг (т): 2

                    щас проверим

                    Добавлено 12.09.11, 13:38
                    да нет же говорю правая часть строки РАБОЧАЯ

                    Добавлено 12.09.11, 13:39

                    ExpandedWrap disabled

                      _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 );

                    так компилится

                    Добавлено 12.09.11, 13:41
                    ето наверное структура проекта дуратская. за нее все


                    like-nix



                    Сообщ.
                    #9

                    ,
                    12.09.11, 13:42

                      Senior Member

                      ****

                      Рейтинг (т): 27

                      Ну а если сделать явное приведение?


                      maxim84_



                      Сообщ.
                      #10

                      ,
                      12.09.11, 13:43

                        :lool:

                        ExpandedWrap disabled

                          wchar_t* _result = 0;

                          DWORD count = _tcstol( strEncodedText.Mid( i+1, 2 ), &_result, 16 );

                        Как-то так.


                        NOCaut



                        Сообщ.
                        #11

                        ,
                        12.09.11, 13:45

                          Full Member

                          ***

                          Рейтинг (т): 2

                          ExpandedWrap disabled

                            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



                          Сообщ.
                          #12

                          ,
                          12.09.11, 13:50

                            Отвечающие здесь — вы хоть сообщение об ошибке читаете? В настройках проекта стоит высокий уровень предупреждений — предупреждения рассматриваются как ошибки, соответственно компиляция не проходит.


                            like-nix



                            Сообщ.
                            #13

                            ,
                            12.09.11, 13:53

                              Senior Member

                              ****

                              Рейтинг (т): 27

                              trainer, :D


                              NOCaut



                              Сообщ.
                              #14

                              ,
                              12.09.11, 13:53

                                Full Member

                                ***

                                Рейтинг (т): 2

                                спасибо. а где ети настройки?


                                trainer



                                Сообщ.
                                #15

                                ,
                                12.09.11, 13:53

                                  Нужно либо убрать источник предупреждения — [неявное] преобразование long в wchar_t с возможной потерей значащих разрядов, либо убрать ключик /WX, либо добавить /wd4244, либо с помощью #pragma warning подавить это предупреждение в этом конкретном месте.

                                  Сообщение отредактировано: trainer — 12.09.11, 14:00

                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                                  0 пользователей:

                                  • Предыдущая тема
                                  • C/C++: Общие вопросы
                                  • Следующая тема

                                  Рейтинг@Mail.ru

                                  [ Script execution time: 0,0898 ]   [ 16 queries used ]   [ Generated: 4.06.23, 01: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: предупреждение обрабатывается как ошибка — нет файла ‘object’

                                  Как исправить эту ошибку?

                                  Понравилась статья? Поделить с друзьями:
                                • Error c2059 синтаксическая ошибка строка
                                • Error c2059 синтаксическая ошибка константа
                                • Error 80004005 неопознанная ошибка elsa что делать
                                • Error 8 кофемашина jura как исправить ошибку
                                • Error 601 battery как убрать ошибку