Я работаю с Makefiles в Cygwin в XP, но использую компилятор командной строки Visual Studio 2005. Неуправляемый код написан на C ++, а управляемый код - Managed C ++.
У меня есть проект, который создает кучу неуправляемых DLL и одну управляемую DLL. Управляемая DLL является оболочкой для одной неуправляемой DLL, которая затем ссылается на многие другие неуправляемые DLL.
Например,
-> Неуправляемый
/
Управляемый -> Неуправляемый -> Неуправляемый
\
-> Неуправляемый и т. Д .;
У меня есть драйвер для тестирования управляемого кода, который загружает управляемую DLL, создает объект и вызывает вызовы управляемой оболочки.
Так вот в чем дело. Пока я оставляю все необходимые библиотеки DLL в одном каталоге с исполняемым файлом тестового драйвера, все работает нормально. Но мне нужно переместить библиотеки DLL в другой каталог, чем тестовый драйвер exe.
Если я перенесу все в другой каталог, все перестанет работать. (Я даже не получаю сообщение об ошибке при запуске test.exe, он «запускается», а затем возвращается в командную строку.) Очевидно, это проблема DLL.
(Вы знаете, я не могу использовать GAC или% PATH%, чтобы test.exe мог найти библиотеки DLL.)
Так что я много занимался поиском и пробовал различные методы, чтобы выяснить, как получить test.exe для просмотра библиотек DLL.
Я пытался указать пути к приложениям. Не сработало А потом прочитал из http://msdn.microsoft.com/en-us/library/ms682586%28VS.85%29.aspx, что «ключ App Paths не используется при вычислении пути поиска DLL».
Я пробовал все виды вещей с файлами манифеста.
Я попробовал кучу вещей, которые, скорее всего, не работали бы в любом случае, но я становился отчаянным.
А недавно я попробовал подход app.config.
С этим последним подходом у меня был некоторый успех, потому что test.exe запускается, но умирает во время выполнения с ошибкой, когда test.exe пытается выполнить вызовы из DLL. Все до этого исполняется.
Например, если я запускаю test.exe, он запрашивает у пользователя некоторую информацию. Если информация неверна, то она возвращает ошибку обратно пользователю, но если информация верна, она возвращает эту ошибку:
"Ошибка: произошла ошибка синтаксического анализа ASCII: не удалось загрузить динамическую библиотеку [ATC15.dll]. Указанный модуль не найден."
Затем test.exe продолжает выполнять оставшийся код.
Поэтому, пожалуйста, помогите мне понять, как заставить исполняемый файл "видеть" все библиотеки DLL.