Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > подключение DLL


Автор: Wardena 28.5.2007, 12:23
Имеется DLL написанная на прологе(Visual Prolog 5.1)
хотелось бы узнать методы подключения dll к проекту C# а также использование процедур этой dll.

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

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

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

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


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

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

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

Неее, не так  smile см. выше

Автор: SherbAnt 30.5.2007, 14:00
Цитата(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++.
Я имею ввиду не обьявление, а использование.

Автор: ivashkanet 30.5.2007, 14:22
Цитата(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'а

Автор: Aannttoonn 17.7.2007, 14:19
Скажите, можно ли и как в программе организовать поиск ДЛЛ-ки(дотнэтовской) с определённым названием(любым) в который есть класс, о котором известно, что он реализует нужный интерфейс.

Автор: ivashkanet 17.7.2007, 14:30
Aannttoonn, можно. http://msdn2.microsoft.com/en-us/library/f7ykdhsy.aspxтебе в руки.
Но учти, что если у тебя не будет имени файла, то это будет тяжелый "ручной" (читай перебор) труд.

Автор: Aannttoonn 17.7.2007, 17:34
Спасибо  smile  Тут репу есть где почесать...

Автор: ivashkanet 17.7.2007, 18:01
Aannttoonn, не за что. 
Конкретная помощь нужна или сам разберешься?

Автор: mr.DUDA 18.7.2007, 09:16
Модератор: Пожалуйста, один топик - один вопрос.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)