Я создал файл Dll из C ++, затем я назвал его в файле C #.
Работает нормально.
Но потом, когда я попытался экспортировать файлы в другой компьютер. Я получаю это исключение: DLL не найдена.
Я загрузил средство обхода зависимостей, чтобы исправить ошибку, потому что я думал, что моя DLL зависит от других DLL, отсутствующих на втором компьютере; Затем я загрузил недостающие библиотеки DLL.
Тем не менее, я все еще получаю ту же ошибку.
Зависимость Уокер также дает мне следующее сообщение: Приложение не удалось запустить, потому что его параллельная конфигурация неверна.
Как вы думаете, это может быть ключом?
Любезно помочь.
Спасибо
/MT
опция компилятора, чтобы получить все зависимые DLL в вашу DLL (или EXE).Что я сделал до сих пор
Зависимость Уокер обнаружил, что параллельная конфигурация была неправильной, и предлагает отследить событие с помощью инструмента sxstrace.exe (командная строка):
http://ntcoder.com/bab/2014/02/27/troubleshooting-side-by-side-issues-using-sxstrace/
Затем я подтвердил характер ошибки с помощью средства просмотра событий, которое выдает мне следующее сообщение:
Зависимая сборка Microsoft.VC80.DebugCRT, processorArchitecture = «x86», publicKeyToken = «1fc8b3b9a1e18e3b», type = «win32», version = «8.0.50727.762» не найдена. Пожалуйста, используйте sxstrace.exe для подробной диагностики.
Я установил версию Microsoft Visual C ++ 2005 SP1 распространяемый пакет (x86) 8.0.50727.762 из http://www.microsoft.com/en-us/download/details.aspx?id=5638. потому что, по-видимому, проблема, кажется, происходит из-за того, что моя DLL была скомпилирована с VC80 CRT и нужна для запуска.
Затем я вернулся на основной компьютер только для того, чтобы перепроверить и выяснить, что это 64-битная версия, и я уверен, что это ошибка. Извините, что не поднял это с самого начала.
Основная проблема заключалась в том, что первый компьютер был 32-разрядным, а второй — 64-разрядным. Я перезагрузил файлы DLL из моего исходного кода (который генерирует DLL), используя второй компьютер, и он работал нормально.
В программе, которая использовала DLL, я вставил код, чтобы проверить, является ли хост 32 или 64-битным, и я бы вызвал соответствующую DLL.
Работало нормально.
Спасибо всем