Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
#1

Библиотека времени выполнения (компиляция /MT) - C++

05.06.2013, 02:28. Просмотров 1954. Ответов 1
Метки нет (Все метки)

такая проблема:
компилирую /MDd все отлично, но прога не запустится на других компах.
компилирую /MD, не запустится на других компах + ошибки:
Код
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp___CrtDbgReportW в функции "public: void __thiscall std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> >::_Compat(class std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> > const &)const " (?_Compat@?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEXABV12@@Z)
D:\VS\second\Debug\second.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
компилирую /MT, как я понимаю это именно тот вариан когда прога запустится на других компах, но тут опять ошибки:
Код
LINK : fatal error LNK1104: не удается открыть файл "libboost_regex-vc100-mt-sgd-1_53.lib"
Многопоточная (/MT)
Многопоточная отладка (/MTd)
Многопоточный DLL (/MD)
Многопоточная отладка DLL (/MDd)

помогите пожалуйста, в чем ошибка компиляции Многопоточная (/MT) ?

ps boost поставил, в свойствах пути до инклуд и библиотек прописал.

Не по теме:

много раз парился с этими проблемами, но все время как-то разруливал и не вдавался в детали, сейчас видимо настал момент..

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 02:28     Библиотека времени выполнения (компиляция /MT)
Посмотрите здесь:

Ошибка времени выполнения C++
C++ Подсчет времени выполнения сортировки
C++ Ошибка времени выполнения.
функция определения времени выполнения C++
C++ Библиотека времени выполнения Microsoft Visual Studio C обнаружила неустранимую ошибку
Оптимизация времени выполнения C++
C++ Контроль времени выполнения программы
Подсчет времени выполнения функции C++
C++ Определение времени выполнения кода
C++ Ошибка времени выполнения (terminate)
Измерение времени выполнения C++
Исправить ошибку времени выполнения C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
Эксперт С++
14889 / 6707 / 1059
Регистрация: 02.05.2013
Сообщений: 10,998
Завершенные тесты: 1
05.06.2013, 12:04     Библиотека времени выполнения (компиляция /MT) #2
Вам нужно, чтобы тип компоновки рантайма Visual C++ совпадал, во-первых, с
конфигурацией проекта (/MT или /MD для Release и /MTd или /MDd для Debug), а
во-вторых, с типом компоновки C++ Runtime для библиотек, статических или
динамических, которые подключаются к проекту.

Цитата Сообщение от GBIT Посмотреть сообщение
компилирую /MDd все отлично, но прога не запустится на других компах.
Запустится, если установить на этих компах отладочную версию Visual C++ Runtime.
Правда, это нарушение EULA.

Цитата Сообщение от GBIT Посмотреть сообщение
+ ошибки:
error LNK2019: ссылка на неразрешенный внешний символ __imp___CrtDbgReportW
Все верно. _CrtDbgReportW - это функция, имеющаяся только в отладочной версии Runtime.
А у Вас в данном случае используется релизная версия (/MD).

Цитата Сообщение от GBIT Посмотреть сообщение
компилирую /MT, как я понимаю это именно тот вариан когда прога запустится на других компах, но тут опять ошибки:
LINK : fatal error LNK1104: не удается открыть файл "libboost_regex-vc100-mt-sgd-1_53.lib"
Подключаемые библиотеки должны быть собраны в точности с теми ключами MT(d)/MD(d), которые
используются в проекте. Это основное правило. Тип компоновки C++ Runtime должен совпадать во
всех подключаемых библиотеках. В данном случае Вам просто нужен другой файл libboost_regex_xxx,
собранный с другими опциями.

Еще советую прочесть документацию Boost по компиляции библиотеки regex - возможно, не был
задан какой-нибудь важный макрос. Особенно это касается статических вариантов компоновки Boost.

Добавлено через 5 минут
Цитата Сообщение от GBIT Посмотреть сообщение
компилирую /MT, как я понимаю это именно тот вариан когда прога запустится на других компах
/MD тоже вполне рабочий вариант, нужно просто распостранить Visual C++ Runtime на
целевой компьютер. Причем это не обязательно делать через запуск vcredist.exe или
Merge Module, можно обойтись простым копированием файлов рантайма в папку с
приложением (VC++ 2010 и выше) или в подпапку с манифестом (VC++ 2008).
Yandex
Объявления
05.06.2013, 12:04     Библиотека времени выполнения (компиляция /MT)
Ответ Создать тему
Опции темы

Текущее время: 12:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru