|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.09.2011, 07:09 | #1 |
Пользователь
Регистрация: 26.05.2011
Сообщений: 22
|
Як вызвать функцию из dll в C# ?
Здравствуйте... Помогите вызвать функцию из dll в C#.
dll создана на VB (VS2010). Вот код dll: Код:
Вот код разрабатываемой программы: Код:
Последний раз редактировалось Stilet; 26.09.2011 в 08:19. |
26.09.2011, 09:14 | #2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Я не знаток VB, поэтому нужно уточнить - код длл будет для платформы .Net? Это важно - подключать можно два вида библиотек - Нетовские и чужие . Ну по-простому в Солюшен Эксплорер есть элемент Референцес - жмакай правой кнопой - Add Reference Там вкладка Browse. Вот и выбирай свою dll.
Ну и в самом классе прицепить через using...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 26.09.2011 в 09:16. |
26.09.2011, 11:26 | #3 |
Пользователь
Регистрация: 26.05.2011
Сообщений: 22
|
Да dll писал в VS2010 под .net 4.0, c подключением проблем нет. Мне даже удаётся создавать экземпляр класса из моей dll:
EnigmaLibClass encrypted = new EnigmaLibClass(); Вопрос в том, как мне вызвать функцию AsciiTextEncode из моей dll. IDE не выводит названия функции в автоматической подстановке. Вот так подставляет: tbxIOText.Text = encrypted.AsciiTextEncode(deText, deKey); // Но это неверно (не работает)... Мне нужно вот так: tbxIOText.Text = AsciiTextEncode(deText, deKey); // Просто вызвать функцию и передать ей параметры, но IDE не выводит её в автоматической подстановке. Даже так не подставляет tbxIOText.Text = EnigmaLibClass.(не подставляет названия функций). Я думаю может в dll коде чего не хватает (там.. конструкторов - деструкторов каких нить...). Как мне правильно вызвать функцию (как, вообще, к ней обратиться) ? |
26.09.2011, 12:02 | #4 | |
Пользователь
Регистрация: 11.03.2011
Сообщений: 67
|
Делаешь это:
Цитата:
Код:
Если помог, жми спасибо
Последний раз редактировалось G-Kyller; 26.09.2011 в 12:23. |
|
26.09.2011, 12:06 | #5 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Код:
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 26.09.2011 в 12:12. |
|
26.09.2011, 12:42 | #6 |
Пользователь
Регистрация: 26.05.2011
Сообщений: 22
|
Благодарю вас за потраченное вами время. Я сам себя хочу щас обматерить ). Разгадка скрывалась в том, что я не определил тип возвращаемой переменной в dll:
Public Function AsciiTextEncode(ByVal str As String, ByVal key As String) Нужно вот так: Public Function AsciiTextEncode(ByVal str As String, ByVal key As String) as string Поэтому IDE не делала подстановку...... Я просто не смог толком объяснить, в чём именно проблема - поэтому вы меня и не поняли. Я добавлял ссылку, делал uses, создавал экземпляр... но IDE не высвечивала функцию, т.к. были ошибки в dll. Сейчас всё рабатает так: tbxIOText.Text = encrypted.AsciiTextEncode(deText, deKey); Но можно и так, как вы показали: tbxIOText.Text = (string)enig.AsciiTextEncode(deText ,deKey); //без объявления в dll - As String. Вся проблема была в том, что я не указал тип возвращаемого значения as String... Я не знал, что можно написать так: (string)enig.AsciiTextEncode(deText ,deKey); Теперь буду знать.... Спасибо... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вызвать функцию в таймере | Ghennadiy | Общие вопросы Delphi | 3 | 06.06.2011 18:40 |
Не могу вызвать функцию (( | NewKoder | Общие вопросы C/C++ | 4 | 11.12.2009 17:26 |
Как вызвать функцию? | blackstersl | Общие вопросы Delphi | 10 | 07.06.2009 19:22 |
как вызвать в Dll по указателю функцию, которая определена в главном потоке? | SaintRain | Общие вопросы Delphi | 1 | 25.11.2006 08:27 |
как вызвать из Dll функцию, которая определена в главном потоке? | SaintRain | Win Api | 1 | 23.11.2006 20:08 |