У меня проблема со статическими библиотеками.Мне нужно использовать 2 разные версии одного и того же SDK в одной DLL без конфликтов имен.Я думал, что решение состоит в том, чтобы сделать 2 статических библиотеки для каждой версии SDK, а затем импортировать эти библиотеки в DLL.Но это решение работает странно, и я не уверен, почему ....
упрощенная ситуация выглядит следующим образом:
LIB1 - есть функция Add1, которая использует вещи из SDK 1.0
LIB2 - есть функция Add2, которая использует вещи из SDK 2.0
DLL - импортирует LIB1 и LIB2, и есть функция Add (плавающая версия), которая вызывает Add1 или Add2 - зависит от номера версии в параметре
Процесс компиляции в порядке, но DLL работает только с одной версией SDK: (
Когда я отлаживаю ее, я вижу, что программа вызывает функцию Add из DLL с версией 2.0 в параметре. Затем Add действительно вызывает Add2 - так чтовсе еще прав. НО тогда внутри функции Add2 он использует вещи, которые определены в SDK 1.0 вместо SDK 2.0! LIB2 действительно создан с SDK 2.0. (include dirs и lib dirs установлены на SDK 2.0)
Такпочему он использует SDK 1.0 ???: (
Это из-за компоновщика, который объединяет все вместе, когда я создаю DLL, и символы из SDK 1.0 переопределяют символы из SDK 2.0 ???(нет разных пространств имен).
У вас есть идеи, где проблема, и есть ли решение ???
Большое спасибо!
Я использую Visual C ++ 2010 ...