Visual C++: Как отключить определенные предупреждения компоновщика?

Развернувшись на ответ Понэта и другие ответы здесь, вы можете получить еще лучшие результаты, используя понимание генератора вместо понимания списка и используя структуру данных set (так как оператор in равен O (n ) в списке, но O (1) на множестве).

Итак, вот функция, которая будет работать для вас:

def filter_list(full_list, excludes):
    s = set(excludes)
    return (x for x in full_list if x not in s)

Результат будет итерируемым, который будет лениво выберите фильтр. Если вам нужен реальный объект списка (например, если вам нужно сделать len() в результате), вы можете легко создать такой список:

filtered_list = list(filter_list(full_list, excludes))
116
задан Ashwin Nanjappa 19 March 2009 в 09:53
поделиться

5 ответов

Добавьте следующее как дополнительную опцию компоновщика:

 /ignore:4099

Это находится в Свойствах-> Компоновщик-> Командная строка

98
ответ дан nneonneo 5 November 2019 в 09:02
поделиться

Файл PDB обычно используется для хранения отладочной информации. Это предупреждение вызывается, вероятно, потому что файл vc80.pdb не найден при соединении файла целевого объекта. Считайте запись MSDN на LNK4099 здесь .

, С другой стороны, можно выключить поколение отладочной информации от поля Project Properties> Linker> Debugging> Generate Debug Info.

1
ответ дан dirkgently 5 November 2019 в 09:02
поделиться

РЕДАКТИРОВАНИЕ: не используйте vc80 / Visual Studio 2005, но Visual Studio 2008 / vc90 версии библиотеки CGAL (возможно от здесь ).

Инструменты Компоновщика, Предупреждающие LNK4099:

Вы могли также скомпилировать с/Z7, таким образом, pdb не должен использоваться, или удалите опцию компоновщика ОТЛАДКИ/, если у Вас нет .pdb файлов для объектов, Вы связываетесь.

1
ответ дан ax. 5 November 2019 в 09:02
поделиться

I suspect /ignore is a VC6 link.exe option. for VS2005 and VS2008's linker there's no documented /ignore option available, but the linker looks just ignore the "/ignore:XXX" option, no error and no effect.

3
ответ дан 24 November 2019 в 02:08
поделиться

Обновление 2018-10-16

Как сообщается, с VS 2013 это предупреждение можно отключить. См. Комментарий @Mark Ransom.

Исходный ответ

Вы не можете отключить это конкретное предупреждение.

Согласно Джеффу Чаппеллу , предупреждение 4099 рассматривается как слишком важное, чтобы его игнорировать , даже при использовании вместе с / wx (который будет рассматривать предупреждения как ошибки и игнорировать указанное предупреждение в других ситуациях)

Вот соответствующий текст из ссылки:

Not Quite Unignorable Warnings

Для некоторых предупреждений числа, спецификация в опции / ignore - принято, но не обязательно действовать. Если появится предупреждение пока параметр / wx не активен, предупреждающее сообщение все еще отображается отображается, но если параметр / wx активен, то предупреждение игнорируется. Как будто предупреждение считается достаточно важным, чтобы отменить попытку игнорировать его, но не в том случае, если пользователь тоже высокая цена на не проигнорированные предупреждения.

Затронуты следующие номера предупреждений:

 4200, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4219, 4231 и 4237
48
ответ дан 24 November 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: