Написание DLL, которая загружает msvcr80.dll и предоставляет функцию free () - PullRequest
6 голосов
/ 14 сентября 2011

У меня есть сторонняя DLL, которая зависит от MSVCR80 и выделяет ресурсы, которые мне нужно очистить.Библиотека не предоставляет free -функцию для этого.Вместо этого мне нужно загрузить ту же библиотеку времени выполнения и вручную вызвать функцию free.

В качестве обходного пути я пытаюсь написать DLL-оболочку, которая загружает правильное время выполнения и предоставляет функцию free.Эта DLL создается с использованием Visual Studio 2010 и зависит от отдельной библиотеки времени выполнения.Выполнение LoadLibrary("msvcr80.dll") завершается неудачно с ошибкой R6034, которая, по-моему, вызвана проблемами с манифестами.

Можно ли даже загрузить msvcr80.dll, используя LoadLibrary?Нужно ли создавать манифест, встраивать его в DLL и хранить msvcr80.dll в том же каталоге, что и моя DLL-оболочка?

Я понимаю, что это ошибка в сторонней библиотеке, но я 'Я в значительной степени застрял с этой версией.Заставить поставщика исправить это, скорее всего, не вариант.

1 Ответ

3 голосов
/ 14 сентября 2011

Возможно, есть лучшие решения, но в случае, если все остальное не удалось, вы можете найти где-нибудь копию VC ++ 2005 Express Edition (= бесплатно, пиратство не требуется ;)) , который использует версию 8.0 компилятора, и, следовательно, то же время выполнения неисправной DLL.

Затем вы создадите свою dll-оболочку, которая будет просто вызывать free, предоставляемую его CRT (дважды проверьте, что вы используете версию dll!).

...