Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Matlab + С#, Подключение dll библиотеки C# к Matlab 
:(
    Опции темы
VerLinG
Дата 30.11.2009, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте! ПОдскажите пожалуйста, как можно подключить dll библиотеку, в который содержится класс, написанный на C# к Matlab и вызвать после этого метод этого класса ?
PM MAIL   Вверх
smoke_man
Дата 30.11.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Посмотри тут.


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
VerLinG
Дата 1.12.2009, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Посмотрел ссылку, много полезного.

Вообщем то вычитал , что взаимодействие идет через Com объекты, а чтобы Matlab видел методы, необходимо создавать интерфейс. Получается мой код dll принимает вид

Код

namespace ComMatLab
{

    public interface ComMatlabSignature
    {
       
        int Summ(int x, int y);
    }

    [ClassInterface(ClassInterfaceType.AutoDual)]
    [ComVisible(true)]

    public class ComClass : ComMatlabSignature
    {
        private int a;

        public int A
        {
            get { return a; }
            set { a = value; }
        }
        private int b;

        public int B
        {
            get { return b; }
            set { b = value; }
        }
        public int Summ(int a, int b) { return a + b; }
    }
}



А в Matlab я должен создать объект так:
Код

net = actxserver('ComMatLab.ComClass');


Только вот не работает...Поправьте, что не так...

З.Ы. Я в Матлабе полный чайник
PM MAIL   Вверх
smoke_man
Дата 1.12.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Посмотри пример. 

Присоединённый файл ( Кол-во скачиваний: 99 )
Присоединённый файл  MatSharp.rar 13,40 Kb


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
VerLinG
Дата 1.12.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Огромное спасибо! Выручили!!! Думаю, тему можно считать закрытой!
PM MAIL   Вверх
smoke_man
Дата 1.12.2009, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не за что!


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
VerLinG
Дата 2.12.2009, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Возник еще один маленький вопрос...
В том примере вызываются статические методы в матлабе. А как создать класс, описанный в dll, передать в него параметры и вызвать метод этого класса в среде m?

Это сообщение отредактировал(а) VerLinG - 2.12.2009, 12:50
PM MAIL   Вверх
smoke_man
Дата 2.12.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Создаешь класс:
Код

using System;

namespace CreateClass
{
    public class Class1
    {
        private double a;
        public Class1(double num)
        {
            a = num;
        }
        public double Add(double b)
        {
            return a+b;
        }
    }
}

Затем вызываешь из Matlab:
Код

NET.addAssembly('D:\C#\CreateClass\CreateClass.dll');
obj = CreateClass.Class1(6);
a = obj.Add(4);


Присоединённый файл ( Кол-во скачиваний: 47 )
Присоединённый файл  CreateClass.zip 13,87 Kb


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
VerLinG
Дата 2.12.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Огромнейшее спасибо!!!
PM MAIL   Вверх
smoke_man
Дата 2.12.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не за что!


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
oksana2106
Дата 10.1.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. пожскажите плз, как класс написаный на си откомпилировать в dll? никогда знать не знала что такое dll а тут начальник в строгом порядке повелел "сделать dll на основе Си и использовать их в матлабе", "чтоб быстрее работало".. прям руки опускаются, и с чего начать не знаю(((
PM MAIL   Вверх
oksana2106
Дата 10.1.2010, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Забыла уточнить, у меня С++ builder 6
PM MAIL   Вверх
oksana2106
Дата 10.1.2010, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вопрос отпал. кажется с этим сама разобралась))) 
PM MAIL   Вверх
smoke_man
Дата 11.1.2010, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Все примеры использования можно найти на официальном сайте Matlab.


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
oksana2106
Дата 11.1.2010, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. пыталась запустить присоединенные выше примеры, мой матлаб ругается что не знает что такое NET.addAssembly. может кто знает откуда такая ошибка м.б? 
(путь к dll я поменяла)

*спасибо за ссылку, попробую почитать
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Добро пожаловать в раздел "Другие языки" форума Vingrad!

Void
Void

Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)

  • Обязательно следуйте правилам Форума.
  • Пожалуйста, прочитайте и следуйте рекомендациям по работе в разделе и навигации по Форуму.
  • Для вставки текстов исходных кодов используйте подсветку синтаксиса из выплывающего списка Код в форме ответа. Если Ваш язык в списке не представлен, то используйте тег: [code=ваш_язык]код[/code], например, [code=ada]код[/code]. Если в будущем подсветка синтаксиса для указанного языка будет реализована, исходный код преобразится.
  • Помните, один вопрос - одна тема.

Приятного времяпрепровождения! С уважением, Void, kemiisto .

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие языки | Следующая тема »


 




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


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

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