![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Энди |
|
||||
|
Unregistered |
Подскажите кто-нибудь, что я делаю не так?
Суть проблемы в следующем: Есть DLL написанная на фортране (PowerStation). Для примера, совершенно простенькая процедура суммирования двух значений. Исходный код:
Далее пытаюсь эту DLL подключить к дельфийной программе. И затем вызвать процедуру. Исходный код:
Выдается ошибка: "Точка входа в процедуру abc не найдена в библиотеке DLL abc.dll" При этом точно такая же процедура написанная на Delphi и упиханная в DLL совершенно нормально работает. Что все-таки не так? Может кто сталкивался с подобным... Заранее благодарен. Это сообщение отредактировал(а) Girder - 3.6.2005, 10:42 |
||||
|
|||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Выполни tdump abc.dll -ee чтобы посмотреть имена экспортируемых функций DLL, посмотри, есть ли там твоя фортрановская функция...
Может имя экспортируемой функции "приукрашается" компилятором фортрана ? -------------------- С уважением, г-н Посол. |
|||
|
||||
| Энди |
|
|||
|
Unregistered |
Спасибо за совет. И в самом деле имя "приукрашивается"...причем весьма странным образом. Вместо названия процедуры abc оно стало _abc@12 А в дельфях такое имя непозволительно...теперь, соответственно, возник вопрос, что же сделать в фортрановской части, чтобы имя стало нормальным? Может кто-то знает... |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
LoadLibrary,GetProcAddress,FreeLibrary
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Энди |
|
|||
|
Unregistered |
Все, разобрался с проблемой.
Ошибка была в фортрановском коде. Вот решение, может кому пригодится... SUBROUTINE abc(a,b,c) !MS$ATTRIBUTES DLLEXPORT :: abc !MS$ ATTRIBUTES ALIAS:'abc' :: abc !MS$ attributes stdcall :: abc !MS$ attributes reference :: c REAL*4 a,b,c c=a+b RETURN END Всем спасибо, кто откликнулся... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |