Сбой вызова функции DLL C ++ в смешанном режиме при запуске приложения с сетевого ресурса. Вызывается из неуправляемого приложения c - PullRequest
0 голосов
/ 01 сентября 2009

DLL-библиотека смешанного режима, вызываемая из собственного приложения C, не может загрузить: Произошло необработанное исключение типа «System.IO.FileLoadException» в неизвестном модуле.

Дополнительная информация: не удалось загрузить файл или сборку 'XXSharePoint, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = e0fbc95fd73fff47' или одна из ее зависимостей. Не удалось предоставить минимальные запросы на разрешение. (Исключение из HRESULT: 0x80131417)

Моя среда: родное приложение C, вызывающее DLL-библиотеку C ++ в смешанном режиме, которая затем загружает DLL C #. Это работает правильно при загрузке с локального диска, но при запуске с сетевого диска происходит сбой с вышеуказанными сообщениями.

Вызов LoadLibrary завершается успешно, как и GetProcAddress. Ошибка загрузки происходит, когда я вызываю функцию.

Я подписал цифровое приложение C и подписал «строгое имя» для двух библиотек DLL. PublickKeyToken в приведенном выше сообщении соответствует названной DLL. Я также выполнил команды CASPOL на моем клиенте, чтобы предоставить FullTrust этому ключу с указанием строгого имени. Когда это не сработало, я попытался командой CASPOL предоставить FullTrust URL-адресу сетевого диска (включая путь к каталогу моего приложения); без изменений в результатах.

Я попытался удалить все зависимости, чтобы была только начальная DLL смешанного режима ... Я заменил тела всех функций просто возвращением целочисленного значения "success". Результаты без изменений. Только когда я изменил его со смешанного режима на Win32 и изменил Свойства конфигурации >> Общие >> Поддержка времени общего языка с «Поддержка времени общего языка» на «Нет поддержки времени общего языка», вызов DLL вызвал ожидаемый результат (просто вернул целочисленное возвращаемое значение "success").

1 Ответ

1 голос
/ 02 сентября 2009

У вас нет разрешения на выполнение кода для этого ресурса. Я думаю, что вы не можете выполнить любое приложение .NET из общего ресурса. Попробуйте, поместите исполняемый файл .NET в общий ресурс и попробуйте выполнить его. Если это не работает, вы должны добавить разрешение в вашей конфигурации .net для использования общего ресурса.

...