Может ли DLL связываться с другой DLL с помощью библиотеки импорта, если первая DLL связана во время выполнения? - PullRequest
1 голос
/ 04 октября 2009

Я пишу DLL для аудио-плеера (foobar2000), используя его SDK. Моя DLL связана с другой DLL, и я сделал это с помощью библиотеки импорта (.lib). Однако во время выполнения аудиоплеер жалуется, что в моей DLL (той, которая связана с другой) отсутствует зависимость.

Я не знаю, можно ли это обобщить или нет, но если первая DLL связана во время выполнения без библиотеки импорта, то не может ли она не связаться с другой DLL с библиотекой импорта? И если это действительно так, то почему это так?

Ответы [ 3 ]

1 голос
/ 04 октября 2009

Вы можете связать DLL с любой другой DLL во время выполнения. Правила связывания DLL одинаковы. Можете ли вы опубликовать имя отсутствующей зависимости? Является ли зависимость правильным каталогом?

0 голосов
/ 04 октября 2009

Когда ОС загружает DLL (и, конечно, тоже EXE), она ищет свою таблицу импорта и пытается загрузить импортированные библиотеки.

Если они не найдены, вы видите ошибку, которую вы описали.

Вы можете использовать динамическую загрузку зависимой библиотеки, используя LoadLibrary и GetProcAddress, чтобы предотвратить это, но тогда вам придется обрабатывать ошибки с отсутствующими зависимостями.

0 голосов
/ 04 октября 2009

Ваша dll должна работать нормально, я думаю, что вы должны проверить это с помощью обходчика зависимостей, чтобы увидеть, чего вам не хватает

...