slavic |
Отправлено: 21.03.2007, 23:52 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 6
|
сделал dll-ку, в которой есть функция использующая ADOQuery, ADOConnection, ADOTable.
не без трудностей, но скомпилировал.
Теперь подгружаю ее из другой программы, пишет Access violation...
В чем может быть дело?
1) статически функция, использующая адо, работала. т.е. подобных ошибок не возникало. так что сама функция абсолютна верна.
2) в данный момент к dll-ке при построении добавлены библиотеки (vcl.lib, odbc32.dll, adortl.lib). Может еще надо добавить?
3) dll-ка подгружается динамически (loadlibrary)
4) дело точно в адо, т.к. до места с адо все из длл-ки выполняется. |
|
olegenty |
Отправлено: 22.03.2007, 09:40 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Для ответа недостаточно данных. включи отладчик и посмотри, где AV происходит. Тогда всё станет понятно.
|
|
Guest |
Отправлено: 22.03.2007, 11:47 |
|
Не зарегистрирован
|
по-моему, всё понятно.
в виде приложения все работало, в длл-ке перестало.
ошибка на компонентах АДО.
что дописать? как исправить? |
|
olegenty |
Отправлено: 23.03.2007, 08:47 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
сорцы, может, в студию? а то тут телепатов нет.
|
|
Ramzay |
Отправлено: 23.03.2007, 21:03 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 31
|
Трудно так сказать, информации маловато. Но то что должно работать — это точно. У меня была похожая проблема, победил так:
CODE | CoInitialize(NULL);
ADOQuery=new TADOQuery(NULL);
| |
|
Admin |
Отправлено: 23.03.2007, 21:18 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
QUOTE | сделал dll-ку, в которой есть функция использующая ADOQuery, ADOConnection, ADOTable.
|
При использовании ADOQuery, ADOConnection, ADOTable — где они
создаются ?
|
|
olegenty |
Отправлено: 24.03.2007, 08:06 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
на модуле данных
который не проинициализирован (в смысле — не создан )
|
|
slavic |
Отправлено: 24.03.2007, 09:42 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 6
|
Проблема решилась. Нужно проверить 2 вещи.
1. Добавить выделение памяти для объектов
TADOConnection *ADOConnection1=new TADOConnection(NULL);
TADOQuery *ADOQuery1=new TADOQuery(NULL);
2. Если потребуется добавить еще и инициализацию ком-объекта
CoInitialize(NULL);
Спасибо всем!
|
|