Вы не показывали код C ++, поэтому я не вижу проблемы в вашем коде.Итак, я попытался воссоздать его сам.Я создал проект C # WPF, который вызывает в DLL.
C #:
[DllImport(@"c:\users\owner\documents\visual studio 2010\Projects\MyDll\Release\MyDll.dll",
CallingConvention = CallingConvention.Cdecl)]
private static extern UInt64 someFunc(int arga, int argb, int argc);
private void DoIt_Click(object sender, RoutedEventArgs e)
{
UInt64 val = someFunc(0, 0, 1);
ResultLabel.Content = val.ToString();
}
C ++ DLL:
extern "C" __declspec(dllexport) unsigned __int64 someFunc(int arga, int argb, int argc)
{
CString s;
s.Format(L"%d\t%d\t%d", arga, argb, argc);
AfxMessageBox(s);
return arga + argb + argc;
}
В окне сообщения из C ++ отображается 0 0 1, как ожидается, и код C # возвращается 1, как и ожидалось.