Есть класс MyClass, экспортируемый из библиотеки.
В программе создаю его экземпляр и обращаюсь к методу:
MyClass* pObj = new MyClass;
pObj->Func();
Прохожу дебагом Func, все выполняется нормально, при выходе из Func в основной код все данные
экземпляра класса портятся.
В этой же программе используется еще одна экспортная библиотека классов, при этом она работает без проблем.
В другой программе MyClass работает без ошибок.
Все библиотеки и проект компилируется и линкуется без ворнингов.
Что здесь может быть не так и в какую сторону копать ?
Здравствуйте, lexer_lx, Вы писали:
_>Есть класс MyClass, экспортируемый из библиотеки.
_>В программе создаю его экземпляр и обращаюсь к методу:
_>_> MyClass* pObj = new MyClass;
pObj->>Func();
_>
_>Прохожу дебагом Func, все выполняется нормально, при выходе из Func в основной код все данные
_>экземпляра класса портятся.
_>В этой же программе используется еще одна экспортная библиотека классов, при этом она работает без проблем.
_>В другой программе MyClass работает без ошибок.
_>Все библиотеки и проект компилируется и линкуется без ворнингов.
_>Что здесь может быть не так и в какую сторону копать ?
Копай в сторону:
1. Разное выравнивание.
2. Разные соглашения о вызовах.
Здравствуйте, lexer_lx, Вы писали:
_>Есть класс MyClass, экспортируемый из библиотеки.
_>В программе создаю его экземпляр и обращаюсь к методу:
_>_> MyClass* pObj = new MyClass;
pObj->>Func();
_>
_>Прохожу дебагом Func, все выполняется нормально, при выходе из Func в основной код все данные
_>экземпляра класса портятся.
_>В этой же программе используется еще одна экспортная библиотека классов, при этом она работает без проблем.
_>В другой программе MyClass работает без ошибок.
_>Все библиотеки и проект компилируется и линкуется без ворнингов.
_>Что здесь может быть не так и в какую сторону копать ?
Посмотрите
этуАвтор(ы):
Александр Шаргин
В статье рассматривается три способа подключения DLL к программе на Visual C++ — неявное подключение (implicit linking), явное подключение (explicit linking) и отложенная загрузка (delayed load) DLL. Для каждого способа демонстрируется использование переменной, функции и класса из подключаемой DLL. В разделе об отложенной загрузке также приводится дополнительная информация (описание обработки исключений и использования функций-ловушек).
статью может поможет