Невозможно запустить приложение c # (используя c ++ dll) на некоторых ПК - PullRequest
1 голос
/ 14 февраля 2011

мы создали приложение c #, которое вызывает c ++ dll (sdbm.dll). Он работает должным образом на большинстве ПК, за исключением некоторых ПК. DLL создается с использованием VC ++ 2008, а приложение выполняется в VC # 2005. Ниже приведены ошибки, возникающие при вызове функций dll из приложения C #.

Ошибка на одном ПК выглядит следующим образом

=====================================

Невозможно загрузить sdbm.dll: это приложение не удалось запустить из-за неправильной конфигурации приложения. Повторная установка приложения может решить эту проблему (исключение из HRESULT: 0x800736B1)

Ошибка на втором ПК

=====================================

Ошибка подписи

Имя приложения: app.exe Appver: 1.0.0.0 Modname: msvcr90.dll Modver: 9.0.30729.4148 Смещение: 0002fc96

Буду признателен за любую помощь

1 Ответ

2 голосов
/ 14 февраля 2011

Как уже заявили другие в своем комментарии, похоже, проблема с зависимостями вашего sdbm.dll. Самый простой способ выяснить первопричину - получить копию DependencyWalker и выбросить в нее файл sdbm.dll. Сначала на компьютере, где он работает без проблем, а затем запустите DependencyWalker на одном из проблемных компьютеров, чтобы увидеть его результаты.

Он дает вам некоторую информацию о том, какие библиотеки DLL не удалось найти на текущем компьютере. Это приводит вас к проблемным библиотекам.

Почти всегда проблема заключается в отсутствии распространяемого пакета Visual C ++ ( 2005 , 2008 , 2010 ) или в том, что ваша библиотека скомпилирована и развернута как отладочная версия , В этом случае он будет ссылаться на отладочные версии, например, mfcxx.dll с помощью mfcxxd.dll. Но эти отладочные версии устанавливаются только с соответствующим SDK (или Visual Studio), а не с пакетом распространения. Это приводит к проблемам на компьютере пользователя, но не на компьютере разработчика.

...