Мои DLL и EXE скомпилированы в одном VS2005 с почти одинаковыми настройками (два проекта в одном решении). EXE-файл содержит тот же заголовочный файл, который используется DLL.
Я попробовал два способа new
объекта, определенного в DLL. Одним из них является new
непосредственно в EXE, а другим способом является вызов статического метода в DLL и использование возвращаемого указателя. Оба способа имеют одинаковый неверный результат.
Я проверил память и обнаружил, что начальный адрес правильный, но где-то внутри класса его размер в EXE больше, чем в DLL. То есть адрес члена, возвращаемого в DLL, имеет вид 0x20000060, после назначения этого объекта в EXE этот адрес становится 0x20000064.
Все мои занятия использовались _declspec(dllexport)
, кстати.
Это единственный подобный вопрос, который я могу найти, но я не использую встроенные классы в DLL:
Размер структуры, содержащий вектор различные размеры между DLL и EXE
Я не знаю, какая информация вам нужна, чтобы выяснить проблему. Так что просто попросите все, что вам нужно, я предоставлю это.