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