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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подключение DLL 
:(
    Опции темы
Wardena
Дата 28.5.2007, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыфтик =)



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

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



Имеется DLL написанная на прологе(Visual Prolog 5.1)
хотелось бы узнать методы подключения dll к проекту C# а также использование процедур этой dll.
PM MAIL ICQ   Вверх
mr.DUDA
Дата 28.5.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Если это обычная DLL-ка, можно подключать и вызывать функции с пом. атрибута [DllImport]. Примеров на форуме полно.


--------------------
user posted image
PM MAIL WWW   Вверх
SherbAnt
Дата 30.5.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообще насколько я знаю программе без разницы на каком языке написанна dll (если не так - поправьте меня).

Процедуры вызываются так
Код

Имя_dll.Имя_процедуры



Это сообщение отредактировал(а) SherbAnt - 30.5.2007, 13:37
PM MAIL Skype   Вверх
ivashkanet
Дата 30.5.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(SherbAnt @  30.5.2007,  12:36 Найти цитируемый пост)
Вообще насколько я знаю программе без разницы на каком языке написанна dll (если не так - поправьте меня).

Есть. Если у нас .net dll, то при подключении ее к проекту (AddReference) мы получаем доступ не только к методам, но и к классам и данным этой dll. 
А если у нас обычная dll,  то мы можем использовать только методы, да и то, написав прототип для них, используя [DllImport]

Цитата(SherbAnt @  30.5.2007,  12:36 Найти цитируемый пост)
Имя_dll.Имя_процедуры

Неее, не так  smile см. выше
PM MAIL WWW ICQ   Вверх
SherbAnt
Дата 30.5.2007, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(ivashkanet @  30.5.2007,  13:47 Найти цитируемый пост)
Есть. Если у нас .net dll, то при подключении ее к проекту (AddReference) мы получаем доступ не только к методам, но и к классам и данным этой dll.


Спасибо. Не знал. smile
А подробнее? 


Цитата(ivashkanet @  30.5.2007,  13:47 Найти цитируемый пост)
Цитата(SherbAnt @  30.5.2007,  12:36 )Имя_dll.Имя_процедурыНеее, не так   см. выше


Как это не так???????!!!!!
Недавно сам так пользовался:

Код

if (что_нибуть)
{
   ShellContextMenu.CmdCut:
}

ShellContextMenu.dll написана на C++.
Я имею ввиду не обьявление, а использование.
PM MAIL Skype   Вверх
ivashkanet
Дата 30.5.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(SherbAnt @  30.5.2007,  13:00 Найти цитируемый пост)
А подробнее? 

Все классы приложения для работы с формами мы получаем из  System.Windows.Forms.dll
Эти классы Form, Button, Control, ...

 
Цитата(SherbAnt @  30.5.2007,  13:00 Найти цитируемый пост)
ShellContextMenu.dll написана на C++.

Это, скорее всего была .Net dll, внутри которой был класс с именем, совпадающим с именем dll.

Если бы класс был бы не .Net, то пришлось бы использовать атрибут DllImport 
Код
    
    [DllImport("kernel32.dll")]
    public static extern IntPtr LoadLibraryEx(string dllFilePath, IntPtr hFile, uint dwFlags);

    [DllImport("kernel32.dll")]
    public static extern bool FreeLibrary(IntPtr dllPointer);

    [DllImport("kernel32.dll", CharSet = CharSet.Ansi)]
    public static extern IntPtr GetProcAddress(IntPtr dllPointer, string functionName);
    
    // Стыбжено у Exception'а

PM MAIL WWW ICQ   Вверх
Aannttoonn
Дата 17.7.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Скажите, можно ли и как в программе организовать поиск ДЛЛ-ки(дотнэтовской) с определённым названием(любым) в который есть класс, о котором известно, что он реализует нужный интерфейс.
PM MAIL ICQ   Вверх
ivashkanet
Дата 17.7.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Aannttoonn, можно. Рефлекшин тебе в руки.
Но учти, что если у тебя не будет имени файла, то это будет тяжелый "ручной" (читай перебор) труд.
PM MAIL WWW ICQ   Вверх
Aannttoonn
Дата 17.7.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо  smile  Тут репу есть где почесать...
PM MAIL ICQ   Вверх
ivashkanet
Дата 17.7.2007, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Aannttoonn, не за что. 
Конкретная помощь нужна или сам разберешься?
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 18.7.2007, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Модератор: Пожалуйста, один топик - один вопрос.


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

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


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

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


 




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


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

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