Невозможно вызвать запись импорта DLL, C # -> C ++, EntryPointNotFoundException

Я пытаюсь вызвать из C # функцию в пользовательской DLL, написанной на C ++. Однако я получаю предупреждение во время анализа кода и ошибку во время выполнения:

Предупреждение: CA1400: Microsoft.Interoperability: Исправьте объявление SafeNativeMethods.SetHook (), чтобы оно правильно указывало на существующую точку входа в «wi.dll». Имя неуправляемой точки входа, в настоящее время связанное с, - SetHook.

Ошибка: System.EntryPointNotFoundException не обработано. Не удалось найти точку входа с именем «SetHook» в DLL «wi.dll».

Оба проекта wi.dll и C # exe были скомпилированы в одну и ту же папку DEBUG, оба файла находятся здесь. Во всей файловой системе есть только один файл с именем wi.dll.

Определение функции C ++ выглядит так:

#define WI_API __declspec(dllexport)
bool WI_API SetHook();

Я могу увидеть экспортированную функцию, используя Dependency Walker:

as decorated: bool SetHook(void)
as undecorated: ?SetHook@@YA_NXZ

C # DLL импорт выглядит так (я определил эти строки, используя CLRInsideOut из журнала MSDN):

[DllImport("wi.dll", EntryPoint = "SetHook", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAsAttribute(UnmanagedType.I1)]
internal static extern bool SetHook();

Я также пробовал без определений EntryPoint и CallingConvention.

Оба проекта 32-битные, я использую W7 64 бит, VS 2010 RC.

Я считаю, что я просто что-то упустил ....

Заранее спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос