Мне предоставили C ++ DLL и связанный с ним заголовочный файл, чтобы интегрировать его с моим приложением. Для начала я просто пытаюсь вызвать DLL из простого консольного приложения Win32 (я использую Visual Studio 2008 Express).
Я связал DLL, указав ее в качестве дополнительной зависимости в настройках проекта.
Интерфейс (т.е. единственная экспортируемая функция) просто возвращает указатель на экземпляр класса, который мне действительно нужно вызвать. Я могу успешно вызвать это, получить указатель и вызвать первую функцию, которая мне нужна (функция "init").
Когда я вызываю функцию, которая фактически выполняет необходимую мне обработку, я периодически получаю сообщение об ошибке «0xC0000005: Место чтения нарушения доступа ....». То есть я запускаю программу - она успешно работает и выходит - я пытаюсь запустить ее снова (ничего не меняя - все параметры жестко запрограммированы) и получаю сообщение об ошибке (и продолжаю делать это).
Я не могу последовательно воссоздать проблему, но я начинаю думать, что это может быть связано с тем, что DLL не выгружается должным образом - после получения ошибки однажды я попытался удалить DLL, и Windows сообщила что это было в использовании. Тем не менее, в другой раз я смог удалить DLL после получения ошибки, скопировать ее обратно, но все равно получил ошибку при следующем запуске.
Должна ли DLL правильно выгружаться после завершения работы моего .exe? Будет ли лучше попытаться явно загрузить / выгрузить DLL, а не делать это неявным образом?
Любая другая помощь или совет с благодарностью.