fotomer 16 Жалоба Опубликовано February 17, 2015 Создаю в QT Creator приложение QT Widgets, открываю его в VS2013 через плагин для студии, подключаю OpenCV 3.0 beta. Все работает, картинки открываются и парсятся. Но стоит написть в коде std::stringstream как вылезает куча ошибок линковки 1>opencv_core300.lib(ocl.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in CameraCalibrator.obj 1>opencv_core300.lib(opencv_core_pch.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in CameraCalibrator.obj 1>opencv_core300.lib(alloc.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in CameraCalibrator.obj 1>opencv_core300.lib(alloc.obj) : error LNK2005: "void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPAX@Z) already defined in opencv_world300.lib(opencv_world300.dll) 1>opencv_core300.lib(system.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in CameraCalibrator.obj 1>opencv_core300.lib(system.obj) : error LNK2005: "public: virtual __thiscall cv::Exception::~Exception(void)" (??1Exception@cv@@UAE@XZ) already defined in opencv_world300.lib(opencv_world300.dll) И далее много. Пробовал в настройках менять кодировку, различные варианты RuntimeLibrary, не помогает. Интересно, что std::wstringstream не вызывает ошибки, string, vector и пр. элементы std работают нормально. Может кто сталкивался с подобной ошибкой? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано February 17, 2015 Поставь в свойствах проекта (General) опцию Multibyte вместо Unicode. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fotomer 16 Жалоба Опубликовано February 17, 2015 Поставь в свойствах проекта (General) опцию Multibyte вместо Unicode. Это я первое что сделал, не помогает. Сейчас выяснил, что ошибка линковки возникает, если присутствует QT. В связке VC2013 и OpenCV без QT эта ошибка не возникает. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано February 17, 2015 Ну, дальше гадание на кофейной гуще: исключить сначала opencv_world из сборки. Вообще, складывается впечатление, что что-то не так с типом используемой в проектах run time library. Но это надо тыкать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fotomer 16 Жалоба Опубликовано February 17, 2015 Вообще, складывается впечатление, что что-то не так с типом используемой в проектах run time library. Но это надо тыкать. В настройках проекта VC++ тоже все возможные варианты Run time library перебрал, не помогает. Загадочно что расширенный std::wstringstream работает нормально. Можно работать с ним, только конвертить всякий раз string в wstring и обратно, хотя это не есть хорошо. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано February 17, 2015 А отключение opencv_world что-нибудь дало? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fotomer 16 Жалоба Опубликовано February 17, 2015 А отключение opencv_world что-нибудь дало? О, исключение opencv_core300d.lib из линковки помогло, все работает. З.Ы. Сделеал пустой проект в QT, открыл в VS студии, написал одну строчку stringstream. C opencv_world300d.lib все работает, с opencv_core300d.lib сразу ошибка ликовки. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано February 17, 2015 А opencv и Qt какие библиотеки линкуются статические или динамические? возможно стоит поменять эти флаги https://msdn.microsoft.com/ru-ru/library/2kzt1wy3.aspx Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fotomer 16 Жалоба Опубликовано February 18, 2015 А opencv и Qt какие библиотеки линкуются статические или динамические? возможно стоит поменять эти флаги https://msdn.microsoft.com/ru-ru/library/2kzt1wy3.aspx OpenCV как я понимаю линкуется динамически с ранним связыванием. При отсуствии opencv_core300d.lib и наличии std::stringstream у меня нормально линкуется с флагом /MD. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах