Мне что-то не хватает; я схожу с ума .. Я использую VS2010 C#, разрабатывая приложение Windows Form на C#. В том же решении у меня есть проект dll C++, который выводит его DLL в ту же папку «/ bin /», что и исполняемый файл C#. Я смотрю на папку, и файл определенно существует. Я даже использовал следующее, чтобы убедиться, что существовали во время выполнения:Неуправляемая DLL не загружается с помощью DLLImport C#
// yep.. it's there...
string s = System.IO.Directory.GetCurrentDirectory() + @"\Foo.dll";
System.Diagnostics.Debug.Assert(System.IO.File.Exists(s));
моя DLL имеет это:
extern "C" __declspec(dllexport) int test_func();
который подтвердил я с утилитой DLL проводника, чтобы иметь правильное название внутри. Сама функция ничего не делает, кроме «return 4;»
C# код:
[DllImport("Foo.dll")]
private static extern int test_func();
Я получаю эту ошибку:
Необработанное исключение типа 'System.DllNotFoundException' произошло в .exe
Дополнительная информация: Не удается загрузить DLL " Foo.dll ': неверный доступ к ячейке памяти. (Исключение из HRESULT: 0x800703E6)
- ваше приложение ... 32-битное или 64-битное? –
32bit. Или я должен сказать, что я не явным образом определяю 64-битное приложение. – Ben