DLL отлично работает в проекте VS2010, но дает нарушения доступа в приложении VS6

За последние несколько недель я создавал dll для usb-устройства, устройство поставлялось с собственной dll, которую я использовал для создания своей собственной dll в VS2010, затем я создал тестовое приложение, которое использует упомянутую dll в 2010 году, чтобы заставить его работать , Это работает хорошо, однако мне теперь нужно использовать его в проекте VS6, когда я использую его, я получаю нарушения прав доступа, я воссоздаю dll в VS6, чтобы посмотреть, поможет ли это, это позволило мне войти в код, как только он попадает в строку в моей dll, которая вызывает стороннюю dll, это вызывает нарушение прав доступа, я только что попытался создать фабричную функцию для создания абстрактного интерфейса для моей dll, но я снова получаю нарушения доступа. Я новичок в DLL, и у меня совершенно нет идей, и помощь или понимание будут очень признательны …

1

Решение

Вы можете получить DLL, созданную с помощью более поздней версии Visual Studio для работы с Visual Studio 6, — это кодировать свою DLL универсальным способом с точки зрения параметров, передаваемых и возвращаемых экспортируемым функциям DLL.

Например, Windows API описывает определенные типы переменных. Эти типы включают DWORD, LONG, BOOL, DWORD_PTRи т. д. Включены различные типы указателей строки, такие как LPCSTR, В этот список также включены указатели на эти различные типы, такие как LPLONG, LPBYTE, LPVOID и т.п.

Если экспортированные функции вашей DLL передают или возвращают тип, который не относится к одному из перечисленных выше, то вы застряли — DLL можно безопасно использовать только в приложении, которое было построено с той же версией Visual Studio, что и DLL построен с.

Например, если вы передаете объекты C ++ (объекты стандартной библиотеки или даже ваши собственные объекты), это большая проблема, если вы хотите, чтобы эта DLL работала в нескольких версиях Visual Studio.

1

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


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