29/05/2013
Ошибка PInvokeStackImbalance
Вопрос:
Я пытаюсь с помощью P/Invoke вызвать acedPostCommand() чтобы прервать текущую команду, а получаю ошибку PInvokeStackImbalance при вызове acedPostCommand внутри моего .NET кода:
Как это можно исправить?
Вот формат описания P/Invoke который я использую:
Код - C#: [Выделить]
- [DllImport("acad.exe",
- CharSet = CharSet.Unicode,
- EntryPoint = "?acedPostCommand@@YAHPB_W@Z")]
- public static extern bool acedPostCommand(string cmd);
Ответ:
Нужно также указать соглашение о вызовах (calling convention). Вот так acedPostCommand() прекрасно вызывается:
Код - C#: [Выделить]
- [DllImport("acad.exe",
- CharSet = CharSet.Unicode,
- CallingConvention = CallingConvention.Cdecl,
- EntryPoint = "?acedPostCommand@@YAHPB_W@Z")]
- public static extern bool acedPostCommand(string cmd);
Источник: http://adndevblog.typepad.com/autocad/2012/07/pinvokestackimbalance-error.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=54.0
Опубликовано 29.05.2013
Отредактировано 06.06.2013 в 12:31:32
Отредактировано 06.06.2013 в 12:31:32