![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
допустим в code generation я в проекте проставляю /MT т.е. статическая линковка.
и либы подключаю предназначенные для /MD(т.е. динамическая линковка) всё компилируется без ошибок почему компилируется без ошибок? будут ли проблемы потом? |
|||
|
||||
Randajad |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 15.3.2012 Репутация: 8 Всего: 8 |
Возможно, линковщик исправляет это досадное недоразумение и назначает им статическую линковку.
Вывод ошибок не подавлен? Обычно, ругается, во всяком случае у меня ругалось. Проблемы могут быть. Лучше так не делать, чтобы не получать сюрпризов в будущем. ![]() И, да, компилируется - так некорректно говорить. Компилируются исходники. Можно их компилировать как угодно. Создает дллки/экзешки - линкер. Он занимается линковкой. Это сообщение отредактировал(а) Randajad - 26.6.2012, 12:15 |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
если используется то, что одинаково в MT и MD
a) интерфейсно, то проблем с линковкой не будет б) реализовано, то проблем с работой не будет однако такие эксперименты проводить таки не стоит |
|||
|
||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
а если у меня есть либа собранная не мной, то как мне определить её тип?
возможно ли подключить часть библиотек статически, а часть динамически? Это сообщение отредактировал(а) mrgloom - 26.6.2012, 14:37 |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
||||
|
||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
||||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
поместите это в библиотеку, и линкуйте на здоровье с чем угодно: оно не зависит от стандартной библиотеки Добавлено через 3 минуты и 10 секунд в разделе Linker есть параметр Input. там вы указываете библиотеки с которыми надо линковать. часть библиотек может быть полноценными (статическими), часть - заглушками для dll. Есть и другие способы - #pragma comment(lib, "libfilename") , установка Project Dependencies |
|||
|
||||
mrgloom |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
не понял о чём вы.
это я и так делаю. |
||||
|
|||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
опять не понятен момент с линковкой, допустим я opencv собрал статически и подключил, и хочу подключить ещё python динамически,это реально?
настройки проекта, то вроде как распространяются на все библиотеки в него подключаемые? |
|||
|
||||
Randajad |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 15.3.2012 Репутация: 8 Всего: 8 |
Не путайте вещи. Статически - это статическая библиотека, в итоге она интегрируется в ваше приложение. Динамически - это DLL, она будет отдельно от вашего приложения.
Вы же говорите про то, как линковать CRT. CRT - это библиотека, которая нужна всегда. Проблемы возникают только тогда, когда вы решаете собрать свое приложение с /MT и статическую библиотеку, которую использует ваше приложение, с /MD. Это сообщение отредактировал(а) Randajad - 28.6.2012, 10:43 |
|||
|
||||
mrgloom |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
что то я совсем запутался т.е. как линковать CRT это параллельно тому какие я должен подключать библиотеки?(собранные статически или динамически) LIBCPMT.LIB Multithreaded, static link MSVCPRT.LIB Multithreaded, dynamic link (import library for MSVCP80.dll) /MD т.е. их как бы нельзя смешивать они взаимоисключаемые? + непонятно откуда потом программа берёт MSVCP80.dll, она стандартная входит в винду? У меня есть главная программа .exe собирается с boost,opencv,fftw статически и есть модуль расширение .dll куда opencv подключается статически и подключается питон динамически. но если так пробовать собирать, то выдаются ошибки типа
т.е. я так понимаю LIBCPMT.LIB и MSVCPRT.LIB конфликтуют. |
||||
|
|||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Будут проблемы, но не с питоном, а с opencv - она у вас попадет в вашу программу дважды (один раз в составе exe, а второй раз - в составе модуля расширения dll) Угу В первой ошибке - передрались сборки opencv. Вторая - вообще непонятно что, похоже вы сказали линковать с LIBCPMT.LIB и MSVCPRT.LIB одновременно |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |