I’ve recently moved a large codebase from VS2013 to VS2019 that builds for windows 32 and 64 bit targets.
Debug and release versions compile with numerous warnings, although these are largely the same as existed in the VS2013 build. Most of them are trivial issues that I know to be safe. I’m compiling with the «W3» compiler option.
However when I attempt to compile an «analyze» version of the build, (I include the «/analyze» compiler option) I get many of the following:
error C2220: the following warning is treated as an error
That’s to be expected, and some of those errors needed attention. But the first thing that seems strange is that MANY of those «errors» were from the windows SDK libraries — code I’m not exactly prepared to edit.
Then I read the following:
https://learn.microsoft.com/en-us/cpp/build/reference/analyze-code-analysis?view=vs-2019
So I amended «/analyze» to /analyze:WX-«, just for the sake of experimenting. This silenced a LOT of the errors, but I still get a number of «Error C2220: the following warning is treated as an error», mostly in 3rd party libraries. I’m happy to fix (or ignore where appropriate) issues that have come up in my own code.
So my question is, how do I suppress this error when it is cropping up in things like the windows SDK and very well-used 3rd party libraries? That fact that this isn’t more of an issue makes me suspect I’ve missed something here. But I currently can’t get through a code analysis, which was really not problematic in VS2013.
I’ve recently moved a large codebase from VS2013 to VS2019 that builds for windows 32 and 64 bit targets.
Debug and release versions compile with numerous warnings, although these are largely the same as existed in the VS2013 build. Most of them are trivial issues that I know to be safe. I’m compiling with the «W3» compiler option.
However when I attempt to compile an «analyze» version of the build, (I include the «/analyze» compiler option) I get many of the following:
error C2220: the following warning is treated as an error
That’s to be expected, and some of those errors needed attention. But the first thing that seems strange is that MANY of those «errors» were from the windows SDK libraries — code I’m not exactly prepared to edit.
Then I read the following:
https://learn.microsoft.com/en-us/cpp/build/reference/analyze-code-analysis?view=vs-2019
So I amended «/analyze» to /analyze:WX-«, just for the sake of experimenting. This silenced a LOT of the errors, but I still get a number of «Error C2220: the following warning is treated as an error», mostly in 3rd party libraries. I’m happy to fix (or ignore where appropriate) issues that have come up in my own code.
So my question is, how do I suppress this error when it is cropping up in things like the windows SDK and very well-used 3rd party libraries? That fact that this isn’t more of an issue makes me suspect I’ve missed something here. But I currently can’t get through a code analysis, which was really not problematic in VS2013.
Содержание
- Ошибки компилятора с C2200 по C2299
- Русские Блоги
- Что делать с ошибкой «ошибка C2220: предупреждение рассматривается как ошибка — объектный файл не создан»
- Интеллектуальная рекомендация
- Реализация оценки приложения iOS
- JS функциональное программирование (е)
- PWN_JarvisOJ_Level1
- Установка и развертывание Kubernetes
- На стороне многопроцессорного сервера — (2) *
- Ошибка компилятора C2280
- Пример. Явно удаленные функции
- Пример. Неинициализированные элементы данных
- Пример. Элементы данных reference и const
- Пример. Перемещаемый удаляет неявную копию
- Пример: переменные и переменные члены
- Пример. Удаление непрямых базовых элементов
- ошибка C2220: предупреждение рассматривается как ошибка — не создан файл ‘объект’
- Ошибка компилятора C2259
Ошибки компилятора с C2200 по C2299
В статьях в этом разделе документации объясняется подмножество сообщений об ошибках, создаваемых компилятором.
Компиляторы и средства сборки Visual Studio могут сообщать о различных типах ошибок и предупреждений. После того как обнаружена ошибка или предупреждение, средства сборки могут делать предположения о намерении кода и пытаться продолжить, чтобы в то же время сообщалось о дополнительных проблемах. Если средства делают неверное предположение, последующие ошибки или предупреждения не могут применяться к проекту. При устранении проблем в проекте всегда начинайте с первой зарегистрированной ошибки (или предупреждения) и выполняйте повторную сборку как можно чаще. Одно исправление может привести к устранению многих последующих ошибок.
Чтобы получить справку о конкретном диагностическом сообщении в Visual Studio, выберите его в окне вывода и нажмите клавишу F1 . Visual Studio открывает страницу документации для этой ошибки, если она существует. Вы также можете использовать средство поиска в верхней части страницы, чтобы найти статьи о конкретных ошибках или предупреждениях. Или просмотрите список ошибок и предупреждений по инструменту и введите оглавление на этой странице.
Не все ошибки или предупреждения Visual Studio описаны. Во многих случаях диагностическое сообщение предоставляет все доступные сведения. Если вы приземлились на этой странице при использовании F1 , и вы думаете, что сообщение об ошибке или предупреждении нуждается в дополнительном объяснении, сообщите нам об этом. Кнопки обратной связи на этой странице можно использовать для устранения проблемы с документацией на сайте GitHub. Если вы считаете ошибку или предупреждение неправильным или обнаружили еще одну проблему с набором инструментов, сообщите о проблеме продукта на сайте Сообщество разработчиков. Вы также можете отправлять отзывы и вводить ошибки в интегрированной среде разработки. В Visual Studio перейдите в строку меню и выберите «Отправить > отзыв о > проблеме» или отправьте предложение с помощью отправки > отзывов > справки.
Вы можете найти дополнительную помощь по ошибкам и предупреждениям на форумах Microsoft Learn Q&A . Или найдите номер ошибки или предупреждения на сайте Сообщество разработчиков Visual Studio C++. Вы также можете выполнить поиск решений в Stack Overflow .
Ссылки на дополнительные справочные материалы и ресурсы сообщества см. в справке и сообществе Visual C++.
Источник
Русские Блоги
Что делать с ошибкой «ошибка C2220: предупреждение рассматривается как ошибка — объектный файл не создан»
Недавно, когда я использовал VS2010 для компиляции библиотеки с открытым исходным кодом ceflib, «Как бороться с» ошибкой C2220: предупреждение рассматривается как ошибка — не создается объектный файл «ошибка»
Причина в том, что в некоторых вариантах компиляции проекта включен параметр «Обрабатывать предупреждения как ошибки» (обрабатывать предупреждения как ошибки).
Просто отключите эту опцию, и вы сможете нормально компилировать.
В Solution выберите проект libMXF и выберите «Свойства» из контекстного меню. Во всплывающем окне свойств выберите «Все конфигурации» для параметра «Конфигурация», выберите «C / C ++ / General /», и значение параметра «Обрабатывать предупреждения как ошибки» справа изменится с исходного «Да (/ WX)» на «Нет (/ WX-). «.
Нажмите ОК и перекомпилируйте.
Интеллектуальная рекомендация
Реализация оценки приложения iOS
Есть два способа получить оценку приложения: перейти в App Store для оценки и оценка в приложении. 1. Перейдите в App Store, чтобы оценить ps: appid можно запросить в iTunes Connect 2. Встроенная оцен.
JS функциональное программирование (е)
Давайте рассмотрим простой пример, чтобы проиллюстрировать, как используется Reduce. Первый параметр Reduce — это то, что мы принимаем массив arrayOfNums, а второй параметр — функцию. Эта функция прин.
PWN_JarvisOJ_Level1
Nc первый Затем мы смотрим на декомпиляцию ida Перед «Hello, World! N» есть уязвимая_функция, проверьте эту функцию после ввода Видно, что только что появившийся странный адрес является пе.
Установка и развертывание Kubernetes
На самом деле, я опубликовал статью в этом разделе давным -давно, но она не достаточно подробно, и уровень не является ясным. Когда я развернулся сегодня, я увидел его достаточно (хотя это было успешн.
На стороне многопроцессорного сервера — (2) *
Обработка сигнала Родительский процесс часто очень занят, поэтому вы не можете просто вызвать функцию waitpid, чтобы дождаться завершения дочернего процесса. Затем обсудите решение. Обратитесь .
Источник
Ошибка компилятора C2280
«declaration«: попытка ссылки на удаленную функцию
Компилятор обнаружил попытку сослаться на функцию deleted . Эта ошибка может быть вызвана вызовом функции-члена, которая была явно помечена как = deleted в исходном коде. Эта ошибка также может быть вызвана вызовом неявной специальной функции-члена структуры или класса, которая автоматически объявляется и помечается компилятором как deleted . Дополнительные сведения о том, когда компилятор автоматически создает специальные deleted функции-члены, см. в разделе Специальные функции-члены default .
Пример. Явно удаленные функции
Вызов функции явным образом deleted вызывает эту ошибку. Функция с явным deleted членом подразумевает, что класс или структуру намеренно предназначены для предотвращения их использования, поэтому для устранения этой проблемы следует изменить код, чтобы избежать этого.
Пример. Неинициализированные элементы данных
Неинициализированный элемент данных ссылочного типа или const член данных приводит к тому, что компилятор неявно объявляет deleted конструктор по умолчанию. Чтобы устранить эту проблему, инициализируйте элемент данных при его объявлении.
Пример. Элементы данных reference и const
Элемент const данных ссылочного типа или вызывает объявление компилятором deleted оператора присваивания копирования. После инициализации эти члены не могут быть назначены, поэтому простая копия или перемещение не могут работать. Чтобы устранить эту проблему, рекомендуется изменить логику, чтобы удалить операции назначения, которые вызывают ошибку.
Пример. Перемещаемый удаляет неявную копию
Если класс объявляет конструктор перемещения или оператор присваивания перемещения, но явно не объявляет конструктор копирования, компилятор неявно объявляет конструктор копирования и определяет его как deleted . Аналогичным образом, если класс объявляет конструктор перемещения или оператор присваивания перемещения, но явно не объявляет оператор присваивания копирования, компилятор неявно объявляет оператор присваивания копирования и определяет его как deleted . Чтобы устранить эту проблему, необходимо явно объявить эти члены.
Если вы видите ошибку C2280 в связи с , это почти наверняка связано с unique_ptr тем, что вы пытаетесь вызвать его конструктор копирования, который является функцией deleted . По умолчанию невозможно скопировать unique_ptr объект . Вместо этого используйте конструктор перемещения для передачи прав владения.
Пример: переменные и переменные члены
Версии компилятора до Visual Studio 2015 с обновлением 2 были несоответствующими и создали конструкторы и деструкторы по умолчанию для анонимных объединений. Теперь они неявно объявлены как deleted . Эти версии также допускали несоответствующее неявное определение default конструкторов копирования и перемещения, default а также операторов присваивания копирования и перемещения в классах и конструкциях, имеющих volatile переменные-члены. Компилятор теперь считает их нетривиальными конструкторами и операторами присваивания и не создает default реализации. Если такой класс является членом объединения или анонимным объединением внутри класса, конструкторы копирования и перемещения и операторы присваивания копирования и перемещения объединения или класса неявно определяются как deleted . Чтобы устранить эту проблему, необходимо явно объявить необходимые специальные функции-члены.
Пример. Удаление непрямых базовых элементов
Версии компилятора до Visual Studio 2015 с обновлением 2 были несоответствующими и позволяли производному классу вызывать специальные функции-члены private virtual косвенных базовых классов. Компилятор теперь выдает ошибку C2280 при таком вызове.
В этом примере класс top косвенно является производным от частного виртуального base . В соответствующем коде это делает элементы base недоступными для top ; объект типа top не может быть создан или уничтожен по умолчанию. Чтобы устранить эту проблему в коде, который использовал старое поведение компилятора, измените промежуточный класс на использование protected virtual наследования или измените top класс на использование прямого наследования:
Источник
ошибка C2220: предупреждение рассматривается как ошибка — не создан файл ‘объект’
У меня ниже класс
И у меня есть функция, как показано ниже
Когда я компилирую эту функцию в Visual Studio 2008, я получаю ошибку, strcpy(IOBname[ii],»»); как показано ниже.
error C2220: warning treated as error — no ‘object’ file generated
Как исправить эту ошибку?
Ошибка говорит о том, что предупреждение было обработано как ошибка, поэтому ваша проблема — предупреждающее сообщение! В этом случае объектный файл не создается из- за ошибки. Поэтому вам нужно проверить свои предупреждения и исправить их.
Если вы не знаете, как их найти: Откройте Error List ( View > Error List ) и нажмите Warning .
Перейти к project properties -> configurations properties -> C/C++ -> treats warning as error -> No (/WX-) .
В качестве примечания, вы можете включить / отключить отдельные предупреждения с помощью #pragma . Вы можете посмотреть документацию здесь
Из документации:
Это сообщение об ошибке очень сбивает с толку. Я только что исправил другие «предупреждения» в своем проекте, и на самом деле у меня было только одно (простое):
warning C4101: ‘i’: unreferenced local variable
После того, как я прокомментировал этот неиспользованный i и скомпилировал его, другая ошибка исчезла.
Это предупреждение касается небезопасного использования strcpy. Попробуйте IOBname[ii]=’′; вместо этого.
Источник
Ошибка компилятора C2259
«класс«: не удается создать экземпляр абстрактного класса
Код объявляет экземпляр абстрактного класса или структуры.
Невозможно создать экземпляр класса или структуры с одной или несколькими чисто виртуальными функциями. Чтобы создать экземпляры объектов производного класса, производный класс должен переопределить каждую чисто виртуальную функцию.
Дополнительные сведения см. в разделе Неявно абстрагирование классов.
Следующий пример приводит к возникновению ошибки C2259:
Всякий раз, когда вы наследуете от интерфейса и реализуете методы интерфейса в производном классе с разрешениями доступа, отличными public от , вы можете получить C2259. Ошибка возникает из-за того, что компилятор ожидает, что методы интерфейса, реализованные в производном классе, имеют public доступ.
Чтобы устранить эту проблему, не используйте более строгие разрешения доступа для методов реализации. Компилятор не рассматривает их как реализации методов интерфейса, определенных в интерфейсе. Это, в свою очередь, делает производный класс абстрактным. Вместо этого уделите разрешения на доступ для реализованных public методов.
C2259 также может возникать из-за работы соответствия, которая была выполнена в Visual Studio 2005 и /Zc:wchar_t теперь включена по умолчанию. В этом случае C2599 можно разрешить либо путем компиляции с /Zc:wchar_t- помощью , чтобы получить поведение из предыдущих версий, либо, предпочтительно, путем обновления типов, чтобы они были совместимы. Дополнительные сведения см. в разделе /Zc:wchar_t (wchar_t является собственным типом).
Следующий пример приводит к возникновению ошибки C2259:
Следующий пример приводит к возникновению ошибки C2259:
Источник
У меня есть ниже класс:
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
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 C2220: warning treated as error - no object file is created.
Может ли кто-нибудь помочь мне решить эту проблему? Заранее спасибо.
4 ответы
Компания документация для C2220 предлагает компилировать с более низким уровнем предупреждения. Он также показывает, что предупреждение, рассматриваемое как опция ошибки, реализовано как флаг компилятора: / WX. Таким образом, вы можете найти этот текст в файле .vcproj и вручную удалить его из файла.
Создан 01 июн.
Я получил «ошибка C2220: предупреждение рассматривается как ошибка — объектный файл не создается». в приведенном ниже коде.
Однажды я изменился тип данных от общего до Int , ошибка устранена.
int colNum=0;
unsigned int total=123;
for (colNum=0;colNum<total;colNum++) {
Создан 14 июля ’14, 21:07
#pragma warning(disable : 4146)
Установите это на уровне файла вместо изменения настроек проекта.
Создан 03 сен.
Возможно, вы забыли добавить заголовок. Именно там вы получите первое предупреждение и посмотрите, в каком файле заголовка определено.
С уважением
Создан 01 июн.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
visual-studio
visual-studio-2005
or задайте свой вопрос.
- Remove From My Forums
error C2220: warning treated as error — no ‘object’ file generated Driver
-
Question
-
Hi,
I have been trying to develop a basic Driver for Windows 7 x86, I have followed the MSDN tutorial to develop a basic Driver. The code followed in MSDN tutorial works although, I changed it a little bit:
#include <ntddk.h> NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) { DbgPrint("Hello, World"); return STATUS_SUCCESS; }
I also researched into to this and removed — /WX (Treat Warnings as Errors) to prevent warnings to be treated as error.
With this changed I am still getting the same errors:
error C2220: warning treated as error - no 'object' file generated C:KmdfSmallKmdfSmallDriver.c
This should have been wipedremoved by the change in setting. Or is this supposed to happen? I only ever truly developed Drivers on Windows XP, so I am seeing if this works, although logically it should work.
Anyways, does anyone have a solution to this problem? Or is this syntactical Error?
Any help will be appreciated,
Rohan Vijjhalwar
Answers
-
Assuming this is the Win8 WDK, I suspect you removed the -WX from the wrong configuration. The warnings are probably because you are not referencing the arguments of DriverEntry. It may be easier to just use the UNREFERENCED_PARAMETER macro to
take care of the problem.Using /W4 and /WX are wise things to do in all cases.
Don Burn Windows Filesystem and Driver Consulting Website: http://www.windrvr.com Blog: http://msmvps.com/blogs/WinDrvr
-
Marked as answer by
Sunday, October 20, 2013 9:53 PM
-
Marked as answer by
-
I suspect the «error» is that you have unreferenced parameters. If you lower your warning level (default is 4), or use the UNREFERENCED_PARAMETER macro on your two parameters, you will solve the problem. Also, instead of NTDDK.H, you should probably
use WDM.H because it is more comprehensive — although it won’t matter for such a simple example.-Brian
Azius Developer Training www.azius.com Windows device driver, internals, security, & forensics training and consulting.
-
Marked as answer by
RRohanR
Sunday, October 20, 2013 9:52 PM
-
Marked as answer by