Всем день добрый.
Собираю мульти-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 и вот на тебе, такая бяка...
Почему не собирается приложение с вызовом DLL процедуры?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- ingasoftplus
- Ветеран
- Сообщения: 425
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 90 раз
- Поблагодарили: 5 раз
Re: Почему не собирается приложение с вызовом DLL процедуры?
проверь, перекомпилировано ли ДЛЛ приложение сначала.
потом - в главном модуле есть процедура ResourceBrowse и что она в ДЛЛ сидит сказано?
потом - в главном модуле есть процедура ResourceBrowse и что она в ДЛЛ сидит сказано?
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Re: Почему не собирается приложение с вызовом DLL процедуры?
Попробуй переименовать "ResourceBrowse" например "ResourceBrowseXXX".
Если наименование процедуры совпадает с внутреннией процедурой Clarion - происходит все как ты описал.
Если наименование процедуры совпадает с внутреннией процедурой Clarion - происходит все как ты описал.
За теми кто отстал - не возвращаться. (С) Кодекс
Re: Почему не собирается приложение с вызовом DLL процедуры?
Порядок сборки у меня правильный, обратный дереву вызовов.
Название ResourceBrowse не зарезервировано, проект ранее работал в виде одного EXE-приложения.
Но мысль о переименовании помогла - я нашел ошибку, спасибо!!!
Я когда-то сталкивался, но забыл, что использование include-файла полностью замещает информацию о процедурах из дерева app. В include-файле, который был указан для External DLL у меня были перечислены все процедуры, кроме явно существующей в дереве процедур приложения. Я внес недостающую процедуру (как раз ResourceBrowse) в include-файл и все заработало.
Спасибо всем откликнувшимся.
Название ResourceBrowse не зарезервировано, проект ранее работал в виде одного EXE-приложения.
Но мысль о переименовании помогла - я нашел ошибку, спасибо!!!
Я когда-то сталкивался, но забыл, что использование include-файла полностью замещает информацию о процедурах из дерева app. В include-файле, который был указан для External DLL у меня были перечислены все процедуры, кроме явно существующей в дереве процедур приложения. Я внес недостающую процедуру (как раз ResourceBrowse) в include-файл и все заработало.
Спасибо всем откликнувшимся.