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

Я получаю эту странную ошибку на некотором материале, который я использовал долгое время. Это может быть новая вещь в Visual Studio 2010, но я не уверен.
Я пытаюсь вызвать unamanged функцию, записанную в C++ из C#.
Из того, что я читал в Интернете и самом сообщении об ошибке, это имеет что-то, чтобы сделать с тем, что подпись в моем файле C# не является тем же как тем от C++, но я действительно не вижу его.
В первую очередь, это - моя функция unamanged ниже:

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 без проблемы.

45
задан MikeTheLiar 20 October 2016 в 15:18
поделиться

1 ответ

Возможно, проблема кроется в соглашении о вызове. Вы уверены, что неуправляемая функция была скомпилирована как stdcall, а не как что-то другое (я бы предположил fastcall)?

.
22
ответ дан 26 November 2019 в 20:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: