Я пытаюсь выяснить причину, по которой моя DLL не загружается на определенные машины.C++ DLL не загружается на некоторых машинах
Мое приложение:
A C# программа развернута с установщиком Setup.msi. Внутри установщика находятся библиотеки DLL, которые размещаются в каталоге установки приложения. Пример:
OUTDIR = c:\Program Files\MyApplicationName\%OUTDIR%\MyApplication.exe
dir %OUTDIR%\DLL_FOLDER\\*.dll
MyDLL.dll применение
C# вызовы LoadLibrary определяется:
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr LoadLibrary(string libname);
Так в основном
intPtr dll_handle = LoadLibrary("myDll.dll");
Называется и мы используем dll_handle для вызовите нужные функции.
До сих пор это работало на 5/7 машинах, на которых я его развернул ... Каковы очевидные ошибки, которые я здесь делаю? :-)
Благодарен за любую помощь!
Обычно это проблема зависимости DLL. Проконсультируйтесь с зависимым ходоком, есть ли у DLL все, что от него зависит. – Timbo
Является ли 'DLL_FOLDER' в пути поиска для DLL как-то? Если нет, почему вы не можете просто поместить DLL в '% OUTDIR%' непосредственно? – PeterT
@PeterT: Да, Питер, я мог бы просто поместить его в ту же папку. DLL_FOLDER использовался, чтобы «держать вещи аккуратными». –