Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2009, 09:27   #1
Mikhail Bakurov
Форумчанин
 
Регистрация: 12.10.2008
Сообщений: 140
По умолчанию из Matlab'a в Delphi через dll

Появилась необходимость использовать функции Matlab в Delphi
Matlab может создавать код на C и dll файл через свой компилятор mcc из m-файла, нужно понять, как этот dll файл использовать в Delphi
Дошел до следующего: создал M-файл add.m
В нем:
function rez=add(x,y);
rez=x+y;
Далее:
mcc -l add.m // создаем dll и файлы на Си
Подключаю фйнкцию из dll (они меняют название зачем то, посмотрел Borland dll Explorer)
function _mlxAdd(x, y : double) : double; cdecl;external 'add.dll'
В строчке сверху не понятно cdecl нужен ли, или что-то другое может нужно(на одном из сайтов нашел)?

ShowMessage(FloatToStr(_mlxadd(10,2 0)));
Использую в Delphi в кнопке
В этом варианте не ругается, что не могу найти точку входа функции в dll, по другому ругается. Но при вызове функции ошибка выводится

Project Project1.exe raised exeption class EAccessViolation with message 'Access violation at address 00000000. Read of address 00000000'. Process stopped. Use Step or Run to continue.

Последний раз редактировалось Mikhail Bakurov; 03.12.2009 в 09:51.
Mikhail Bakurov вне форума Ответить с цитированием
Старый 03.12.2009, 09:43   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

исследуйте цю dll на экспортируемые функции, например с помощью <see_dll.exe> из комплекта visual studio

upd
-------

Цитата:
Как уже написал выше исследовал Borland dll Explorer
однако позже добавили, отсутствовало
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 03.12.2009 в 10:21.
raxp вне форума Ответить с цитированием
Старый 03.12.2009, 09:53   #3
Mikhail Bakurov
Форумчанин
 
Регистрация: 12.10.2008
Сообщений: 140
По умолчанию

Как уже написал выше исследовал Borland dll Explorer
вот что он выдает:

_addGetMcrID
_addInitialize
_addInitializeWithHandlers
_addPrintStackTrace
_addTerminate
_mlfAdd
_mlxAdd
Mikhail Bakurov вне форума Ответить с цитированием
Старый 03.12.2009, 10:23   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

имхо в дельфи...
Код:
function _mlxAdd(x, y : double) : double; stdcall; external 'add.dll';
мда и наверняка оно addInitialize требует... нужно порыть или глянуть что оно первым вызывает
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 03.12.2009 в 10:26.
raxp вне форума Ответить с цитированием
Старый 03.12.2009, 10:40   #5
Mikhail Bakurov
Форумчанин
 
Регистрация: 12.10.2008
Сообщений: 140
По умолчанию

В архиве лежит все, что получается из Matlab'a и проект Delphi
Вложения
Тип файла: rar Проба.rar (330.7 Кб, 96 просмотров)
Mikhail Bakurov вне форума Ответить с цитированием
Старый 03.12.2009, 13:32   #6
Mikhail Bakurov
Форумчанин
 
Регистрация: 12.10.2008
Сообщений: 140
По умолчанию

Никто не может помочь?
Mikhail Bakurov вне форума Ответить с цитированием
Старый 03.12.2009, 13:59   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

похоже matlab при установке какие-то dll кидает в систему и та dll тож ее использует... у меня требует при инициализации либы - mclmcrrt711.dll (матлаба у меня нет)... если приложите, то бум смотреть дальше
зы: есть чуйство, что это не все, что потребует
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.12.2009, 14:25   #8
Mikhail Bakurov
Форумчанин
 
Регистрация: 12.10.2008
Сообщений: 140
По умолчанию

Выкладываю дополнительную библиотеку
Вложения
Тип файла: rar mclmcrrt711.rar (42.2 Кб, 79 просмотров)
Mikhail Bakurov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчет количества символов через dll a_n_n_a Помощь студентам 14 19.05.2009 10:16
Хук HttpSendRequestA через Wininet.dll VitaliyK Общие вопросы .NET 0 08.12.2008 14:28
DLL через Lib kiloruble Общие вопросы C/C++ 1 02.12.2008 22:58
работа с БД (компонент ADO,dbGrid) через dll oWish Помощь студентам 4 29.02.2008 12:23
Передача данных(массива) через DLL. acorables Общие вопросы Delphi 4 05.02.2007 13:16