Второе значение не передается функции C++ во время pininvoke.
У меня есть функция c++, которую я вызываю из c# с помощью pinInvoke. Ниже приведен мой метод cpp-
int test(DWORD verb,DWORD verb2 ) { return verb2 *100; }
Моя функция выставляется как -
extern "C" { __declspec(dllexport) int test(DWORD verb, DWORD verb2); }
Ниже приведен мой код c#, в котором я вызываю описанный выше метод:
общедоступный API класса
{
[Атрибута DllImport("mydll.dll", точка входа = "тест", функции setlasterror = true, то CallingConvention = CallingConvention.Ключевое слово cdecl)]
[return: MarshalAs(UnmanagedType. U4)]
публичный статический тест extern uint(
[MarshalAs(UnmanagedType. U8)] ulong глагол,
[MarshalAs(UnmanagedType. U8)] ulong verb2
);
static void Main (string[] args)
{
uint с х = с помощью dpapi.тест(26,10);
Приставка.Напишите ("результат - "+x);
}
}
Здесь второе значение передается как 0, так что получается неправильный результат.Я делаю что-то не так, передавая значение?
Что я уже пробовал:
Я относительно недавно в Пинвоке. Поэтому я попытался отладить, чтобы увидеть, не передается ли значение в код c++ или код c++ не возвращает правильные значения.Я обнаружил, что значение, передаваемое само по себе, было неправильным.