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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
05.06.2013, 02:28     Библиотека времени выполнения (компиляция /MT) #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++ Библиотека времени выполнения Microsoft Visual Studio C обнаружила неустранимую ошибку
Оптимизация времени выполнения C++
C++ Контроль времени выполнения программы
Подсчёт времени выполнения программы C++
C++ Ошибка времени выполнения (terminate)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14188 / 6203 / 984
Регистрация: 02.05.2013
Сообщений: 10,331
Завершенные тесты: 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)
Ответ Создать тему
Опции темы

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