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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Взаимодействие managed and unmanaged кода 
:(
    Опции темы
maque
Дата 11.8.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть RRDTool, который реализован на перле, и установлен на никс-серваке нашего предприятия. Собирает всякую инфу и строит графики. В качестве тестового задания мне надо переделать все это на ASP.NET/С#. Я же нашел в инете реализацию RRDTool на С, собрал dll, и хочу теперь юзать функции из этой dll в своем aspnet-приложении. С тем, как это делать, разобрался. Но вот в чем проблема. Внутри функций этой dll идет обращение к, например, printf, которая выводит ошибки на консоль. Но у мя то консоли нет, все исполняется в CLR, но ошибки хотелось бы видеть. Теперь возникает вопрос, как можно из функций этой dll например вызвать Response.Write, чтобы выводить все в броузере?
PM MAIL   Вверх
DEER
Дата 11.8.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

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



У себя в dll пишешь публичную функцию, например это будет ф-я содинения, опписывается она, допустим так:
Код

BOOL Connect(void (_stdcall *func)(LPCTSTR mess))

в ней при возникновении события, вызываешь функцию из параметра (func) со строковым параметром (то что нужно вывести) (как её вызывать спроси в форуме по С++)

потом в классе в котором будешь юзать эту dll
описываешь делегат функции которую будешь передавать в dll
Код

private delegate void ReceiveHandler(string msg);

при объявлении публичных методов из dll'ки ставим этот делегат
Код

[DllImport("MyDLL.dll", SetLastError=true)]
        private static extern System.Boolean Connect(
            [In] ReceiveHandler receiver
            );

пишем функцию которая будет выводить на экран сообщение
Код

private void MsgReceive(string msg)
{
  if(msg!=null)
  {
     MessageBox.Show(msg);
  }
}

теперь при подключении нам остается передать эту функцию в dll
Код

 MyDLL.Connect(new ReceiveHandler(MsgReceive));


Вот так, что не так объяснил - спрашивай!!


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

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


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

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


 




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


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

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