none
Создание dll доступной для api RRS feed

Ответы

Все ответы

  • Для какого API?
    20 марта 2013 г. 7:28
  • Собственную dll, функции которой можно вызвать через Api. 
    20 марта 2013 г. 9:48
  • Типа свой SDK?
    20 марта 2013 г. 10:04
  • Не совсем, но что то подобное.
    20 марта 2013 г. 18:32
  • Вопрос сформулирован неверно, перефразируйте его.
    20 марта 2013 г. 18:42
    Модератор
  • Привет

    Просто создаете новый проект в Visual Studio - Библиотека классов (Class Library), далее в ней определяете свой класс API и открытые методы. Также классы, с которыми работает ваш API и объекты, которых будет возвращать.

    Если предпогалается возможность расширения пользователем каких-либо классов - то тогда ваша библиотека должна определять и работать на уровне интерфейсов, а не самих классов.


    Для связи [mail]

    21 марта 2013 г. 12:01
  • Есть основная программа (далее - ОП) к которой подключается несколько dll библиотек,  в том числе моя dll доступная для API (иметься в виду обсуждаемая в текущей теме) .  Я хочу сделать так что любая программа могла использовать API для взаимодействия с ОП.

    Я не знаю как правильно это организовать.


    • Изменено NIKkakNIK 22 марта 2013 г. 11:38
    22 марта 2013 г. 5:24
  • Делаете как предлагал Дмитрий, после чего создаете Setup свой библиотеки и во время установки прописываете ее в глобальный кэш сборок. Тем самым ваше API сможет использовать любое ОП.
    22 марта 2013 г. 5:33
  • Моя dll

    public static class commesLibrary
        {
    
            public delegate void ChangedNotification(byte[] param);
            static ChangedNotification changeNotification;
    
            public static int RegisterForChanges(ChangedNotification lpCallbackAddress, byte[] key)
            { 
    
            return 0;
            }
    
            public static int UnRegisterChanges(byte[] key)
            {
    
                return 0;
            }

    Вызываю из другой программы следующим образом:

            [DllImport(@"C:\Users\one\Documents\Visual Studio 2010\Projects\TwLibraryWPF\commes\bin\Release\commes.dll")]
            private static extern int RegisterForChanges(ChangedNotification lpCallbackAddress, byte[] key);
    
            [DllImport(@"C:\Users\one\Documents\Visual Studio 2010\Projects\TwLibraryWPF\commes\bin\Release\commes.dll")]
            private static extern int UnRegisterChanges(byte[] key);
    
            private delegate void ChangedNotification(byte[] param);
            ChangedNotification changeNotification;
    
            public bool Register()
            {
                try{
                    // выскакивает ошибка Не удается найти точку входа "RegisterForChanges" в DLL  commes.dll
                int result = RegisterForChanges(changeNotification, new byte[] { 1, 2, 3, 4, 5, 6 });
                return (result == 0) ? true : false;
                }
                catch{return false;}
            }

    Как создать эту самую точку входа ?

    23 марта 2013 г. 20:07
  • Это вы наверное с Win32 .dll перепутали. В .net все проекты - это сборки (будь то .dll или .exe) и у них нет точек входа (в том понимании как это было в Win32). Вы можете подключить такие сборки в свой проект. Посмотрите как это делается: Практическое руководство. Добавление и удаление ссылок с помощью диалогового окна "Добавление ссылок".

    В вашем варианте вы в вызывающую программу подключаете ссылку на вашу dll, прописываете namespace и можете использовать функционал вашей сборки.

    23 марта 2013 г. 20:39
  • Как я писал ранее: 

    Есть основная программа (далее - ОП) к которой подключается несколько dll библиотек,  в том числе моя dll доступная для API (иметься в виду обсуждаемая в текущей теме) .  Я хочу сделать так что любая программа могла использовать API для взаимодействия с ОП.

    я имел в виду во  время работы основной программы к ней могли обращаться другие программы(запущенные в другом процессе) посредством некой промежуточной библиотеки, как правильно организовать этот процесс ? Pipe и TCP для этого не подходят(не захотел примешивать сеть), Mutex только позволяет обмениваться данными, нельзя создавать обработчиков событий.  

    24 марта 2013 г. 11:39
  • Вы хотите реализовать взаимодействие между выполняемыми программами? Если да - то можно использовать:

    1. Общие файлы (самый простой вариант);

    2. Pipe (о которых вы уже писали);

    3. COM (не так -то просто);

    4. .NET Remoting (устаревшее);

    5. WCF (рекомендуется)

    Более подробно можно посмотреть здесь: Удаленное взаимодействие .NET.

    24 марта 2013 г. 15:40