Отцам Матлаба и прочим продвинутым юзверям..

pstp

Может кто знает, как подключить внешние .dll к матлабу?

stat7819605

смотря какие dll
насколько я знаю не все dll можно прикрутить, а только MEX на сях

freezer

смотри в хелпе mexFunction... еще может быть можно COM-компоненты подцеплять, но я не уверен

1234554321

рекомендую Математику 5, в смысле интеграции наиболее продвинутая на данный момент

pstp

от таких пространственных советов легче не стало...

psm-home

Хочешь конкретных ответов, задай конкретный вопрос. Что за DLL, ты её сам написать собрался или она уже готовая? Если готовая, то что за язык/средство разработки использовано. Ничего из этого ты не написал и хочешь "непространственных" ответов. А вообще тебе уже сказали, стандартный способ подключить внешнюю DLL к Matlab заключается в создании DLL, которая обязательна должна экспортировать функцию

void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[] )


Эту функцию будет вызывать среда Matlab, чтобы передать в DLL параметры и забрать обратно, то что DLL насчитала. Собрать DLL можно как из командной строки Matlab, так и из IDE MS VC. Всё это описано в справке на Matlab и ещё в книжке "Компьютер в математическом исследовании" (lorien.local по запросу maple_matlab_latex) на странице 434 есть кусочек про это. Чего же боле?

SGolovanov

dll - внешняя, то есть не мной написана, скорее всего на C++, хотя может и еще на чем, но точно не в матлабе...
в ней одна функция по связи с портом в 2000-й виндовсе.
Я понимаю, что на то и создается матлабом .dll , чтобы использовать ф-ции, написанные в си, как матлабовские, но вся фишка как раз в том, что необходимо подрубить не матлабовскую .dll-ку.
Я видел такие вещи , как
dumpbin main.dll/export
на матлабовском форуме, но у меня лично нихрена не пашет, даже выдает, что нет такой ф-ции dumpbin...
ЗЫ. Ссылку на книгу обязательно посмотрю, когда домой приду.

pstp

предыдущую мессагу беру на себя

psm-home

dll - внешняя, то есть не мной написана, скорее всего на C++, хотя может и еще на чем, но точно не в матлабе...
...вся фишка как раз в том, что необходимо подрубить не матлабовскую .dll-ку.
ОК, с этой DLL ещё что нибудь идёт? Ну там .h файл например. Откуда ты взял её такую? А то разобраться с голой DLL (не зная прототипов функций) будет трудно. В принципе, можно написать свою DLL, которая будет вызываться Matlab'ом и вызывать функции из внешней DLL.
в ней одна функция по связи с портом в 2000-й виндовсе.
А что за порт? Порт ввода/вывода или COM порт или ещё что-то?
видел такие вещи , как
dumpbin main.dll/export
на матлабовском форуме, но у меня лично нихрена не пашет, даже выдает, что нет такой ф-ции dumpbin
dumpbin - это такая утилита. которая в частности умеет просматривать таблицу экспорта в DLL. Идёт в составе MS VC++ 6.0/7.0 (за другие не отвечу). То есть ты можешь зайти в каталог типа E:\Program Files\Microsoft Visual Studio\VC98\Bin или где там у тебя VC стоит и увидишь там прогу dumpbin.exe. Делаешь в ком. строке DUMPBIN.EXE /exports my_cool.dll и видишь список функций, которые my_cool.dll экспортирует. Только это, мне кажется, тебя не спасёт, ну увидишь ты там что вроде:

ordinal hint RVA name
1 0 00002810 _De32
2 1 000028D0 _D4
3 2 000027C0 _St12
4 3 000028E0 _Upd12
5 4 00002590 _fil24


И чего? Про то, какие параметры передавать функциям ты не узнаешь. Нужен .h файл к этой DLL.

pstp

у меня на самом деле есть даже описание к этой .dll - она писалась по заказу к дровам для шагового движка, порты для связи движка через исошную шину
может, я выложу ее - посмотришь?

pstp

dll идет вместе с дровами для движка, но без дополнительных файлов

psm-home

есть даже описание к этой .dll
может, я выложу ее - посмотришь?

Выкладывай, я посмотрю, вдруг поможет.

freezer

ну хорошо, открыл ты порты, а читать потом чем собираешься?

pstp

второй .dll - кой

мне бы главное идею понять, а дальше уж сам разберусь...

freezer

Си++-ми владеешь?
P.S. версия матлаба у тебя какая?

pstp

нет, с сями оччень туго
матлаб 6.1

freezer

тогда с тебя вторая Dll-ка и три пакета сока, - подрублю без проблем
правда, матлаб у меня 6.5 ... надеюсь библиотеки подойдут

pstp

- сок будет завтра
P.S. только, как говорится, с исходниками

freezer

без проблем.
кстати, насколько библиотеки надежные? а то может там в DllMain код какой вредоносный?

pstp

мы тогда "автора" из под земли достанем
кстати, ты не в Д-2 сидишь?

pstp

надежные - не для фигни всякой они создавались..

freezer

стати, ты не в Д-2 сидишь?

я что, маньяк там до 12 ночи сидеть?
а так, вообще - да, бываю

pstp

ну тогда я тот маньяк, который второй день подряд Шифта ищет...

psm-home

Ну вот, пока я ходил гулять, всё и устроилось...
З.Ы А открывать порты всем процессам в системе только потому, что лень писать драйвер - нечестно.

freezer

угу, прога получилась 128 строк
Оставить комментарий
Имя или ник:
Комментарий: