Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Event из Dll 
:(
    Опции темы
Evropeec
Дата 16.9.2009, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Нужна помощь!
у меня есть dll написанная на С++. В ней есть event и процедура которая должна прикреплять обработчик к этому событию.

код С++
Код


ANT_AssignChannelEventFunction((UCHAR)i, (CHANNEL_EVENT_FUNC) ANTChannelEventProcess, aucRxBuf); 



а мне надо это переделать на C#.
пытался делать через делегаты, но что-то не получилось.


Это сообщение отредактировал(а) Evropeec - 22.9.2009, 17:00
PM MAIL   Вверх
Evropeec
Дата 22.9.2009, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.2.2007

Репутация: нет
Всего: нет




кое что уже наковырял.

Есть библиотека ANT_DLL.dll на С++, в ней определена функция

Код

ant_dll.h

typedef BOOL (*CHANNEL_EVENT_FUNC)(UCHAR ucChannel, UCHAR ucEvent);


которая является параметром для

Код

ant_dll.h

typedef void (*P_ANT_AEF)(UCHAR, CHANNEL_EVENT_FUNC, UCHAR*); 
extern P_ANT_AEF        ANT_AssignChannelEventFunction;


Код

ant_dll.cpp

P_ANT_AEF         ANT_AssignChannelEventFunction;
...
hANTdll = LoadLibraryA("ANT_DLL.dll");
...
ANT_AssignChannelEventFunction = (P_ANT_AEF) GetProcAddress(hANTdll, "ANT_AssignChannelEventFunction");


и так, я вызываю функцию 

Код


ANT_AssignChannelEventFunction(0, ANTChannelEventProcess, aucRxBuf);

где ANTChannelEventProcess:

static BOOL ANTChannelEventProcess(UCHAR ucChannel_, UCHAR ucMessageCode_)
{
..
}



и этот код РАБОТАЕТ!!!!

мне надо написать это на C#

я делаю следующее: 

создаю делегата

Код


public delegate int CHANNEL_EVENT_FUNC(byte ucChannel, byte ucEvent);



объявляю функцию

Код


[DllImport("ANT_DLL.dll", CharSet=CharSet.Unicode)]
        public static extern void ANT_AssignChannelEventFunction(byte ucChannel, CHANNEL_EVENT_FUNC pfChannelEvent, byte[] pucRxBuffer);
        public CHANNEL_EVENT_FUNC iChannelEventFunction;
....

iChannelEventFunction = new CHANNEL_EVENT_FUNC(myChannelEventFunction);
ANT_AssignChannelEventFunction(0, iChannelEventFunction, aucRxBuf);



где myChannelEventFunction:

Код


public static bool myChannelEventFunction(byte ucChannel, byte ucEvent)
{
...
}



и это НЕ РАБОТАЕТ!!!!

Я не понимаю  почему под C++ всё работает, а под C# нет. 

Помогите, может где-то я что-то упустил. 
Очень уж не хочется писать проект на C++.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0629 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.