У меня есть сторонняя библиотека (скажем, tp.lib) и сторонняя dll (скажем, tp.dll), которую мне нужно использовать в моем проекте C ++ (мой проект создает dll, давайте назовем его my.dll).
Я включил библиотеку с комментарием #pragma (lib, «libraryname») в заголовочный файл
а также включил путь к файлу библиотеки в configurationproperties-> linker-> дополнительные каталоги библиотек в моем проекте C ++ Visual Studio.
Код компилируется и ссылки в порядке. но не в состоянии выполнить. Когда я использовал зависит от проверки, если я что-то упустил, я заметил, что tp.dll не найден. Файл tp.dll находится в той же папке библиотеки, где находится файл tp.lib.
Что я должен сделать, чтобы tp.dll был включен в my.dll?
Путь поиска во время выполнения не включает в себя папку, в которую вы помещаете библиотеку lib, поэтому размещение DLL вместе с библиотекой не позволяет ОС найти ее во время выполнения. Вы можете добавить это к пути или переместить DLL. список приоритетов поиска находится на MSDN.
У DLL другой путь поиска. Цитата ниже из документы:
При неявном и явном связывании Windows сначала ищет «известные библиотеки DLL», такие как Kernel32.dll и User32.dll. Затем Windows выполняет поиск библиотек DLL в следующей последовательности:
Каталог, в котором находится исполняемый модуль для текущего процесса.
Текущий каталог.
Системный каталог Windows. Функция GetSystemDirectory извлекает путь к этому каталогу.
Каталог Windows. Функция GetWindowsDirectory извлекает путь к этому каталогу.
Каталоги, перечисленные в переменной среды PATH.
Заметка
Переменная среды LIBPATH не используется.
Вы не можете «включить DLL в другую DLL». Вам нужно либо развернуть их вместе, либо поместить dll для зависимостей в место, где Windows найдет это.