Я получаю эту странную ошибку в некоторых вещах, которые я использовал довольно долгое время. Это может быть новая вещь в Visual Studio 2010, но я не уверен.
Я пытаюсь вызвать незафиксированную функцию, написанную на С++ с С#.
Из того, что я прочитал в Интернете, и самого сообщения об ошибке, это связано с тем, что подпись в моем С# файле не такая, как у С++, но я ее действительно не вижу.
Прежде всего это моя неизмененная функция ниже:
TEngine GCreateEngine(int width,int height,int depth,int deviceType);
И вот моя функция в С#:
[DllImport("Engine.dll", EntryPoint = "GCreateEngine", CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr CreateEngine(int width,int height,int depth,int device);
Когда я отлаживаю на С++, я вижу все аргументы просто прекрасными, поэтому я могу только думать, что это как-то связано с преобразованием из TEngine (который является указателем на класс с именем CEngine) в IntPtr. Я использовал это раньше в VS2008 без проблем.