Может ли приложение, созданное с помощью Visual C++ 6, использовать библиотеку DLL, созданную с помощью Visual Studio 2008?

Я разрабатываю SDK, и у нас есть клиенты, которые все еще пишут код на VC++ 6, в то время как другие используют Visual Studio 2005, а третьи — на 2008.

В настоящее время мы создаем несколько разновидностей нашего SDK, где мы создаем один и тот же исходный код с каждым из этих компиляторов. Я хочу узнать, действительно ли это необходимо. Безопасно ли создавать наш SDK (который имеет форму DLL) с VS2008 и ожидать, что наши клиенты, использующие VC++ 6, смогут использовать его без проблем?


person Community    schedule 04.09.2009    source источник


Ответы (3)


Зависит от. Зависит ли ваша DLL от среды выполнения VC, MFC или ATL? Если это так, вашим клиентам придется распространять эти DLL. Ваша dll экспортирует структуры/классы/функции С++? Стандартизированного ABI для C++ не существует, поэтому они могут работать или не работать с другими компиляторами. Если ваша dll экспортирует только внешний стиль "C" {}, все будет в порядке.

person Roel    schedule 04.09.2009

Это довольно безопасно, если вы не позволите клиентской программе удалять память, выделенную в вашем SDK. Наоборот.

person Kirill V. Lyadvinsky    schedule 04.09.2009

Если DLL имеет чистый C API, ваш исполняемый файл никогда не освободит какой-либо ресурс, выделенный DLL (и наоборот), тогда он должен работать.

person sbi    schedule 04.09.2009