2016-12-23 2 views
-1

Пусть:LoadLibrary не удался, возвращение ErrorCode 127

  1. У меня есть исполняемый файл, названный A.exe, он находится в пути: патх.
  2. A.exe loadlibrary B.dll, B.dll loadlibrary C.dll.
  3. B.dll находится в пути: PathB. C.dll имеет копию в PathA и PathB.

Так что мой вопрос: когда A.exe загружает B.dll, какой путь C.dll будет загружен B.dll?

В моей ситуации, C.dlls имеют что-то другое, например, одно _cdecl, другое _stdcall. при удалении c.dll в PathA, A.exe может успешно загрузить B.dll; однако, когда c.dll в PathA существует, он не работает

+2

'PathA \ C.dll' будет загружен в ваш сценарий. 'LoadLibrary' не может знать, какой именно модуль его вызывает; только каталог EXE находится в пути поиска. Документация для «LoadLibrary» подробно описывает алгоритм поиска (поскольку это имеет последствия для безопасности). –

+0

Да, вы правы. И после отладки, я знаю, что PathA \ c.dll не существует, он будет загружать PathB \ c.dll. Все о стратегии поиска loadlibrary. Спасибо за помощь! – lwiu

ответ

0

Я предполагаю, что C.dll в PathA будет загружен из-за вашего рабочего пути - это путь A.exe. И я думаю, что вроде _cdecl dll может возникнуть проблема, когда вы динамически загружаете его.

Смежные вопросы