Мой продукт представляет собой библиотеку C ++, которая в Windows распространяется как DLL.Он очень мало использует c-runtime (базовый iostream и все), поэтому я уверен, что все последние версии CRT будут в порядке.
Поскольку мой клиент должен строить свое приложение, используямой dll, я не хочу навязывать ему какую-либо конкретную версию во время выполнения.Я бы хотел, чтобы мой dll связывался с любой версией библиотеки времени выполнения, используемой моим клиентским приложением (и я могу предположить, что он будет использовать динамическое связывание для своего CRT).В конце концов, разве это не динамическое связывание?Возможно ли это?
РЕДАКТИРОВАТЬ: связывание DLL со статическими библиотеками времени выполнения также не будет работать, потому что тогда статическая среда выполнения (из библиотеки DLL) и динамическая среда выполнения (из приложения клиента) будут смешаны,что плохо.
РЕДАКТИРОВАТЬ: я в основном спрашиваю, как мне сказать загрузчику времени выполнения связать мою dll с любым CRT, с которым связано приложение?Возможно, что-то с манифестом?В более общем плане, мой вопрос заключается в том, как создать dll с хорошим поведением, который будет использоваться клиентами, создающими свои собственные приложения?
РЕДАКТИРОВАТЬ: Благодаря советам в ответах я перенес все ссылкиSTD классы в встроенные функции в моих заголовках, и связал мою DLL со статическими библиотеками времени выполнения.Теперь он работает даже в приложениях, связанных с различными версиями CRT.