2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Проблема с переходом на VS 2017
Сообщение03.04.2017, 12:34 
Аватара пользователя
Старый код не компелируется. Была версия VS 8. Выдаётся огромное число ошибок. При этом нет интерактивного перехода на строку а только отсылка к интернет статье про ошибку.
Посоветуйте, что делать?

 
 
 
 Re: Проблема с переходом на VS 2017
Сообщение03.04.2017, 13:03 
MGM в сообщении #1206146 писал(а):
Посоветуйте, что делать?
Как минимум, привести код ошибки и текст информационного сообщения. Также было бы неплохо привести текст программы с ошибкой (небольшую его часть или MWE — Minimal Working Example).

Если имеется в виду Visual C++, то предварительно можно сказать, что начиная приблизительно с Visual Studio 2010, в Microsoft взяли курс на сближение со стандартом языка C++ и к настоящему моменту достигли на этом поприще большого успеха (сейчас Visual C++ [точнее, последняя его версия, которая поставляется с Visual Studio 2017] занимает где-то 3 место среди всех компиляторов C++ [после clang++ и g++] по полноте и качеству поддержки нынешнего стандарта языка [C++14]). Поэтому не удивительно, что старый код может не компилироваться (он, вероятно, использовал нестандартные расширения компилятора, полагался на ошибки в реализации стандарта или [что менее вероятно] использовал те возможности языка, которые были изменены в новых стандартах [Visual C++ из состава Visual Studio 2017 опирается на C++14 и, отчасти, на C++1z — будущий C++17]).

 
 
 
 Re: Проблема с переходом на VS 2017
Сообщение03.04.2017, 13:20 
Аватара пользователя
Спасибо. Переставил версию c V8 на 10.... в настройках. Вроде бы что-то улучшилось. Хотя почему-то пишет your project out of dates. Ну и вылезли какие-то ошибки, видимо связанные с изменениями в библиотеках. Типа '__iob_func': identifier not found.
Попробую решить сам эту проблему.

-- Пн апр 03, 2017 14:45:04 --

Лет семь назад по совету сетевых гуру начал вставлять строку
extern "C" { FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]}; }
И всё работало.
Теперь выдаёт это:

'__iob_func': identifier not found.
Гугль выводит опять на на ошибки линковки, где советуют различные обходы с __iob_func()
Про то, что компилятор может не видеть такой функции интернет молчит. Или зарыл ответы очень глубоко.
Может кто-нибудь знает, где теперь эта функция есть?

-- Пн апр 03, 2017 14:57:26 --

Теперь эта вставка должна выглядеть так
extern "C" { FILE _iob[3] = {__acrt_iob_func(0), __acrt_iob_func(0), __acrt_iob_func(0)}; }

-- Пн апр 03, 2017 14:58:36 --

Всё работает.

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group