статическое связывание — выделение объекта C ++ по версиям MSVCRT

У меня VS2010, и мне нужно построить приложение.
Также у меня есть .dll с .lib и .h построен с VS2005.
Эта библиотека зависит от log4cxx.dll (я построил 2010 и загрузил двоичный файл 2005 года).
Когда я вызываю метод интерфейса библиотеки, который возвращает ссылку на построенный объект, он вызывает исключение AV. Я не могу собрать свое приложение с другой версией, и я уже пробовал изменить многопотоковую отладку на тип моего приложения.

1

Решение

Вполне вероятно, что объект, который вы получаете, имеет другую структуру памяти.
Если вы передаете объект c ++ через границы времени выполнения, вы должны быть уверены, что получающий объект имеет ту же структуру. Например, если компилятор VS2005 переупорядочил его поля для оптимизации, а VS2010 сделал это другим способом. Или один из используемых вами классов (например, std :: string) изменился между версиями. Прочитайте, как объекты возвращаются из методов COM.

Существует также проблема с размещением объектов в одной среде выполнения и освобождением в другой …

В качестве решения вы можете попробовать установить VS2005, но нет никаких гарантий, что вы закончите тем же

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]