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