2016-07-08 2 views
0

Я новичок в Windows, у меня есть проект dll, который генерирует dll и тестовый проект, который является exe, который потребляет или вызывает функции в dll. Для этого я использую visual studio 2010. в настоящее время, когда я проверяю общие свойства dll в свойствах конфигурации, целевое имя - DecryptEmailDll, а целевое расширение - .dll. С этим тест exe работает нормально, и я получаю желаемый результат. Но когда я пытаюсь переименовать целевое имя dll в TransformEmail, сборка в порядке, но во время работы она говорит: «Не удалось найти DecryptEmailDll». Я не могу понять, почему он пытается найти старую dll со старым именем, а не с новым.не удается запустить .exe, который использует DLL-файл после изменения имени DLL в свойствах проекта dll.

ответ

0

Test.exe был создан с именем файла для поиска. Поэтому вы должны изменить его и перестроить с новым именем dll.

+0

Я не указал ни одного имени файла. exe просто вызывает функцию в этой DLL, то есть –

+0

Проверьте источник и ресурсы test.exe, он не может просто вызвать функцию из ЛЮБОЙ DLL, она должна указать, какой из них она хочет динамически загружать. Редактировать: Windows .exe может указывать требуемые DLL либо непосредственно в информации об EXE-файле, поэтому DLL загружается ОС во время загрузки самого EXE (тогда имя dll должно быть частью ресурсов или зависимостей настроек .exe проект), или он может динамически вызывать одну из функций loadLibrary, с именем файла .dll, а затем искать нужную функцию по имени функции. – Ped7g

+0

это не динамическая загрузка. Я только что включил .h из dll и назвал одну из ее функций. ничего больше –

0

Ну, если вы измените имя dll, вам нужно либо изменить объявление import lib, если вы статично импортируете dll (я полагаю, что с cahnge имя dll вы имели в виду также имя lib и exp) , Или, если вы динамически импортируете, измените параметр функции LoadLibrary.