Почему не собирается приложение с вызовом DLL процедуры?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Dias2004
Посетитель
Сообщения: 29
Зарегистрирован: 31 Январь 2006, 15:02
Откуда: Россия, Москва

Почему не собирается приложение с вызовом DLL процедуры?

Сообщение Dias2004 »

Всем день добрый.
Собираю мульти-DLL проект на CEE 6.3 build 9055. В головном приложении - головное MDI окно (frame) с меню. Есть две DLL: в одной - декларации файлов. В другой DLL сперва размещаю процедуру UserLogOn (окно с запросом имени/пароля).
Все нормально работает, вызов (сразу при старте программы) выглядит так:
CODE
...
IF ~UserLogOn() !если регистрация НЕ удалась
RETURN !вышли вон
.
Процедура UserLogOn открывает таблицу пользователей и осуществляет поиск пользователя по имени и проверяет его пароль, если все успешно, то открывается главное окно приложения. То есть весь проект вроде бы срастается и нормально работает.

Теперь добавляю в DLL простейшую browse-процедуру, а в головном модуле делаю ее вызов:

START(ResourceBrowse,25000)

Головной модуль не собирается. Ошибка - syntax error, no matching prototype available.

При этом контрольный пример (DLLTutor) собирается и работает.
Я просмотрел все глаза, сравнивая приложения (мое и контрольный пример).
Изучил настройки приложений EXE и DLL, изучил код в файлах .clw и .inc. Принципиальной разницы я не замечаю - вызываемые процедуры описаны как внешние, параметров вызова нет, соответственно вызов (START() ) делается без параметров. Однако EXE-приложение моего проекта упрямо не собирается.

Прошу помощи у гуру - куда смотреть, где искать ошибку?
Первый раз взялся за мульти-DLL и вот на тебе, такая бяка... :(
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 425
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 90 раз
Поблагодарили: 5 раз

Re: Почему не собирается приложение с вызовом DLL процедуры?

Сообщение ingasoftplus »

проверь, перекомпилировано ли ДЛЛ приложение сначала.

потом - в главном модуле есть процедура ResourceBrowse и что она в ДЛЛ сидит сказано?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Re: Почему не собирается приложение с вызовом DLL процедуры?

Сообщение Игорь Столяров »

Попробуй переименовать "ResourceBrowse" например "ResourceBrowseXXX".
Если наименование процедуры совпадает с внутреннией процедурой Clarion - происходит все как ты описал.
За теми кто отстал - не возвращаться. (С) Кодекс
Dias2004
Посетитель
Сообщения: 29
Зарегистрирован: 31 Январь 2006, 15:02
Откуда: Россия, Москва

Re: Почему не собирается приложение с вызовом DLL процедуры?

Сообщение Dias2004 »

Порядок сборки у меня правильный, обратный дереву вызовов.

Название ResourceBrowse не зарезервировано, проект ранее работал в виде одного EXE-приложения.

Но мысль о переименовании помогла - я нашел ошибку, спасибо!!!

Я когда-то сталкивался, но забыл, что использование include-файла полностью замещает информацию о процедурах из дерева app. В include-файле, который был указан для External DLL у меня были перечислены все процедуры, кроме явно существующей в дереве процедур приложения. Я внес недостающую процедуру (как раз ResourceBrowse) в include-файл и все заработало.

Спасибо всем откликнувшимся.
Ответить