Можно ли смешивать статические, многопоточные библиотеки DLL в одном проекте? - PullRequest
4 голосов
/ 18 февраля 2010

Можно ли использовать разные библиотеки A, B, C в одном проекте в Visual Studio, где A - статическая библиотека, B - многопоточная, а C - многопоточная DLL? Или все они должны быть одного типа для одного .exe-файла?

Редактировать: Извините, A является однопоточной статической библиотекой. B - многопоточная статическая библиотека, C - многопоточная DLL. (Я предполагаю, что A и B одинаковы с точки зрения компоновщика?)

Ответы [ 3 ]

7 голосов
/ 10 декабря 2014

Вы можете свободно смешивать статические и динамические библиотеки, если они все используют одни и те же библиотеки времени выполнения.

В Свойствах -> Общие -> Тип конфигурации -> установите для Статической библиотеки или Динамической библиотеки для библиотек A и B, которые вы хотите использовать для статических или динамических.

В Свойствах -> C / C ++ -> Генерация кода -> Библиотека времени выполнения -> Каждая библиотека, которая будет связана вместе, должна использовать такую ​​же библиотеку времени выполнения , например, многопоточную DLL отладки.

Таким образом, вы можете сделать:
A - Тип конфигурации: Статическая библиотека. Lib времени выполнения: многопоточная отладочная DLL. (да, это нормально)
B - Тип конфигурации: динамическая библиотека. Lib времени выполнения: многопоточная отладочная DLL

Эти две библиотеки могут быть связаны в один и тот же exe.

2 голосов
/ 18 февраля 2010

Не уверен, что такое B, но общая идея - да.

A будет скомпилирован непосредственно в exe B Не уверен, что это за C Да, функции в этой библиотеке будут связаны во время выполнения.

0 голосов
/ 18 февраля 2010

Вы говорите о компиляторе библиотек с различными типами ссылок CRT (статические, DLL)?Если да, то это невозможно.

...