Я использую [Dllimport ("DllName.dll")] где я уверен, что путь к моей DLL существует в переменной окружения процесса PATH, и до сих пор Я получаю сообщение "DllName.dll не найден"
«Не удалось найти DllName.dll» также может означать, что DllImport не обнаружил одну из зависимостей DllName.dll.
Захватите Зависимость Уокер , чтобы проверить, какая зависимость вам не хватает.
Я использовал const string lcms2Path = "C:\\lcms2.dll"; в своем приложении C # в течение самого длительного времени. Но, наконец, переместил DLL в папку BIN, и это прекрасно работает [DllImport("lcms2.dll")].
const string lcms2Path = "C:\\lcms2.dll";
[DllImport("lcms2.dll")]
DllImport не обращается к переменной окружения PATH при загрузке DLL. Я совершенно уверен, что DllImport следует стандартным правилам загрузки нативной DLL в нативную программу, когда на DLL ссылается по имени. Вот статья, которая детализирует эти правила
http://msdn.microsoft.com/en-us/library/ms682586.aspx
Я нашел самый простой способ загрузить DLL - просто поместить ее в то же место, что и программа, которую я выполняю.
Я бы посоветовал вам использовать FileMon (sysinternals.com), чтобы проверить правильность ваших предположений о расположении библиотеки.