Вызов функции PInvoke '[…]' разбалансирует стек

Я получаю эту странную ошибку на некоторые вещи, которые я использовал в течение долгого времени. Это может быть новой вещью в 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 без проблем.

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

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