P / Invoke в ASP.NET (исключение Dll не найдено) - PullRequest
1 голос
/ 27 марта 2012

У меня есть .dll, которую я создал в рамках проекта C ++. Я должен использовать эту DLL в моем проекте ASP.NET, и я написал функции DllImport для того же самого в моем проекте.

Статический класс внутри App_Code имеет несколько DllImport функций

public static class Functions
{
    [DllImport("MyFav.dll", EntryPoint = "fnmain", 
     CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
    public static extern StringBuilder fnmain();
}

Поскольку я не мог добавить DLL C ++ напрямую в качестве ссылки в моем проекте ASP.NET (потому что это не сборка .NET), я просто скопировал в каталог верхнего уровня. (Имя проекта ASP.NET -> Щелкните правой кнопкой мыши -> Добавить существующий элемент)

Теперь, когда я пытаюсь запустить проект, я получаю следующую ошибку:

Исключение:

Невозможно загрузить DLL «MyFav.dll»: указанный модуль не найден. (Исключение из HRESULT: 0x8007007E)

Есть предложения? Где хранится .dll?

Ответы [ 3 ]

1 голос
/ 31 мая 2013

У меня была похожая ошибка, но с использованием сервера Mono XSP. Для этого сервера решение состоит в том, чтобы поместить dll в корень вашего веб-приложения (родительская папка ./bin). Это также относится к текущему рабочему каталогу (при запуске из Xamarin Studio), который предположительно связан.

1 голос
/ 27 марта 2012

.dll должен находиться в папке \bin вашего приложения asp.net.

По-видимому, существуют правила разрешения dll. См. Порядок поиска в Dynamic-Link Library на MSDN

Вы также можете попробовать:

[DllImport("C:\path_to_dll\MyFav.dll", EntryPoint = "fnmain", 
 CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern StringBuilder fnmain();

Если все это не работает, возможно, у вашего MyFav.dll есть дополнительные неразрешенные зависимости. Вы можете использовать Dependency Walker , чтобы проверить их.

0 голосов
/ 27 марта 2012

если используется без копирования пути, вставьте каталог dll в bin в папке вашего проекта ,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...