Как мне собрать Notepad ++ с помощью Visual C ++ 2010 Express? - PullRequest
7 голосов
/ 14 сентября 2010

Windows SDK установлен. Я успешно построил N ++ с помощью Visual C ++ 2008 Express. Но теперь с 2010 у меня много сообщений об ошибках sprintf_s:

1>C:\Program Files\Microsoft Visual Studio 10.0\VC\include\string(676): error C2039: 'sprintf_s' : is not a member of '`global namespace''
1>C:\Program Files\Microsoft Visual Studio 10.0\VC\include\string(676): error C3861: 'sprintf_s': identifier not found

Пожалуйста, помогите.

Ответы [ 3 ]

20 голосов
/ 14 сентября 2010

В проект включен лист свойств с именем no_ms_shit.props (после преобразования).В этом листе довольно много ненависти к тому, что MS пытается делать последние 5 лет.

Они слишком переборщили с выключением всего, даже отключили ссылки на sprintf_s ().Это источник вашей ошибки, заголовок stdio.h пропускает объявление, но заголовок строки использует его.Не уверен, что редакция Express поддерживает редактирование листов свойств проекта, но в розничной редакции выполняются следующие шаги:

  • Просмотр + Диспетчер свойств
  • Откройте один из узлов и найдите «нет мс»дерьмо "
  • Щелкните по нему правой кнопкой мыши, Свойства
  • C / C ++, Препроцессор, Определения препроцессора
  • Измените __STDC_WANT_SECURELIB__=0 на 1
  • Добавьте _CRT_SECURE_NO_WARNINGS к этимопределения

Проект компилируется сейчас.Я получаю ошибку сборки для копирования файлов, это событие после сборки.Начните другой вопрос, если вы не можете понять, как это исправить.

4 голосов
/ 01 ноября 2010

Странно.У меня Visual Studio 2010 Ultimate, и он даже не позволяет мне получить доступ к пункту меню View-> Property Pages.Это отключено для меня.

Но я просто зашел в файл no_ms_shit.props и отредактировал его только в Notepad ++ :).Затем перейдите в Project-> Properties-> Configuration Configuration-> General, и выберите «No» для обработки предупреждений как ошибок, и добавили _CRT_SECURE_NO_WARNINGS в определениях препроцессора.

Дон Хо должен идти по течению, чем проклинать дерьмо мс, когда он разрабатывает в Windows и Visual Studio.

Это сработало для меня при использовании Visual Studio 2012 Professional :

  • Вам необходимо отредактировать no_ms_shit.vsprops (* .vsprops, не только * .props!):Заменить __STDC_WANT_SECURE_LIB__=0 на __STDC_WANT_SECURE_LIB__=1

  • Добавить _CRT_SECURE_NO_WARNINGS к определениям препроцессора.

2 голосов
/ 06 декабря 2010

Более внимательный взгляд на источник показал бы, что большинство библиотечных вызовов, которые вызывают бесконечный шум, если вы не используете этот лист свойств, происходят из проекта SciLexer.dll. Scintilla является кроссплатформенным, поэтому ему не нужны все специфические ошибки Windows. Как вы упомянули, Microsoft зашла слишком далеко, заменив стандартную библиотеку строк, столь же оправданную, как попытка избежать переполнения буфера.

Так что вы можете направить эту критику Нилу Ходжсону (главному разработчику Scintilla), а не Дону Хо.

CChris

...