Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2012, 14:12   #1
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,692
По умолчанию From C++ to C# dllexport разбалансировка стека

.h:
Код:
extern "C" {
	__declspec(dllexport) int __cdecl nwBytesIn(unsigned int connection);
}
.cpp:
Код:
extern int __cdecl nwBytesIn(unsigned int connection)
{
...
}
in c#:
Код:
        [DllImport("networkapi.dll")]
        static extern int nwBytesIn(uint connection);

        public int getBytesIn(uint numConnection)
        {
            return nwBytesIn(numConnection);
        }
Вызов nwBytesIn влечет за собой ошибку:

Цитата:
Вызов функции PInvoke "sniffer_c_sharp!sniffer.Sniffer::n wBytesIn" разбалансировал стек. Вероятно, это вызвано тем, что управляемая сигнатура PInvoke не совпадает с неуправляемой целевой сигнатурой. Убедитесь, что соглашение о вызовах и параметры сигнатуры PInvoke совпадают с неуправляемой целевой сигнатурой.
Функции без параметров вызываются без проблем

Последний раз редактировалось Kostia; 04.03.2012 в 14:22.
Kostia вне форума Ответить с цитированием
Старый 04.03.2012, 14:21   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а соглашение о вызове кто будет соблюдать?
Код:
[DllImport("networkapi.dll", CallingConvention=CallingConvention.Cdecl)]
судя по отзыву вопрос в принципе решен.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 04.03.2012 в 15:31.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт из DLL (__declspec(dllexport) и extern "C" {}). Объясните. spamer Общие вопросы C/C++ 3 24.01.2012 04:27
использование стека delll Помощь студентам 1 18.06.2010 21:01
увеличение стека на C++ Alex_FF Помощь студентам 1 16.12.2009 23:57
Реализация Стека MjRed Общие вопросы C/C++ 3 13.05.2009 12:18
Заполнение стека inkvizitor Общие вопросы Delphi 5 08.10.2007 17:01