C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
SOS!, Error on start App
IngvarII
Отправлено: 12.08.2005, 14:05


Не зарегистрирован







Народ, Помогите!!!
После добавления в проект вызовов DLL-ки в отладчике получаю
App faulted- access violation at adr .... write of address 0x00000000 sad.gif
olegenty
Отправлено: 12.08.2005, 15:08


Ветеран

Группа: Модератор
Сообщений: 2412



я бы и рад, но данных маловато...
Vlad
Отправлено: 12.08.2005, 17:14


Машинист паровоза

Группа: Участник
Сообщений: 231



"Помогите!!, а что помочь — тишина в ответ" biggrin.gif biggrin.gif Ребята, задавайте конкретные вопросы! А то как то все ваши вопросы получаются типа "помоги, а что не знаю, но главное помоги!"
Deftones
Отправлено: 17.08.2005, 18:41


Не зарегистрирован







[...]провери внимателно адресите които ползваш.....назнам....

Отредактировано Георгий — 17/08/2005, 20:41
Gedeon
Отправлено: 17.08.2005, 19:28


Ветеран

Группа: Модератор
Сообщений: 1742



Это на каком? И что значит кто понимает?
Георгий
Отправлено: 17.08.2005, 19:40


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



QUOTE (Gedeon @ 17/08/2005, 20:28)
Это на каком? И что значит кто понимает?

т.е. это не украинский?
тогда я, на всякий случай, чуть подправлю это сообщение.

2 IngvarII многие программисты использовали функции из DLL и ничего у них не падало. Покажите исходники и опытные искатели ошибок что-нибудь найдут.

Отредактировано Георгий — 17/08/2005, 20:43
esh
Отправлено: 17.08.2005, 20:15


Дежурный стрелочник

Группа: Участник
Сообщений: 71



> т.е. это не украинский?
Нет, даже совсем не похож.
Gedeon
Отправлено: 18.08.2005, 08:47


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Георгий @ 17/08/2005, 19:40)
QUOTE (Gedeon @ 17/08/2005, 20:28)
Это на каком? И что значит кто понимает?

т.е. это не украинский?

Это вообще далеко не украинский, какой-то или болгарский или я не знаю даже, в еще одном топике проскочило где-то.


А вообще интересно смогут ли россияне читать украинский текст, будет время, заведу во флейме тему, проверим.
Иван
Отправлено: 18.08.2005, 09:11


Машинист паровоза

Группа: Участник
Сообщений: 207



Это болгарский,
а на счет того, смогут ли Россияне читать украинский — думаю смогут, если кто то хочет могу еще на 3 "неизвестных" языках написать biggrin.gif

перевод того что осталось после редактирования:
CODE

проверь внимательно адреса которые используешь


Отредактировано Иван — 18/08/2005, 09:26
Vlad
Отправлено: 18.08.2005, 09:37


Машинист паровоза

Группа: Участник
Сообщений: 231



ну можем читать, по русски, укрански, болгарском, белорусском, не много на польском. Кто еще что подскажет?
Иван
Отправлено: 18.08.2005, 10:15


Машинист паровоза

Группа: Участник
Сообщений: 207



+ гагаузский, турецкий, молдавский (румынский) smile.gif





sorry...

Отредактировано Иван — 18/08/2005, 10:17
AVC
Отправлено: 18.08.2005, 12:07


Ветеран

Группа: Модератор
Сообщений: 1583



Может пора тему во флейм перенести? А? smile.gif
esh
Отправлено: 18.08.2005, 21:04


Дежурный стрелочник

Группа: Участник
Сообщений: 71



Тобі цікаво, чи зможуть відвідувачі форуму читати текст на українській мові? Мені теж. Гадаю що зможуть. Я на білоруському форумі читав smile.gif , але там як і на українських форумах 99% на російській мові.
Георгій, ну як? Зміг прочитати?
Георгий
Отправлено: 18.08.2005, 22:29


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



QUOTE (esh @ 18/08/2005, 22:04)
Тобі цікаво, чи зможуть відвідувачі форуму читати текст на українській мові? Мені теж. Гадаю що зможуть. Я на білоруському форумі читав smile.gif , але там як і на українських форумах 99% на російській мові.
Георгій, ну як? Зміг прочитати?

у меня дед хохол smile.gif

кстати удалил я что то начинающееся на букву х... и повторяющееся 2 раза.. так — на всякий случай smile.gif

похоже погорячился — извините

Давайте лучше на вопрос ответим?
спирим, что ему функция получения адреса функции в dll вернула ноль потому чтоон забыл extern "C" поднисать cool.gif

Отредактировано Георгий — 18/08/2005, 23:58
esh
Отправлено: 19.08.2005, 00:46


Дежурный стрелочник

Группа: Участник
Сообщений: 71



Да тут вообще не понятно:

> После добавления в проект вызовов DLL-ки...

Какого вызова? Как подключает? В чем компилировалась библиотека?

Да и "write of address 0x00000000".

>> спирим, что ему функция получения адреса функции в dll
>> вернула ноль потому чтоон забыл extern "C" поднисать

А почему тогда write?

ИМХО проблема со стеком, т.е. где-то есть __stdcall, а где-то нет,
вот и остается в стеке мусор (или наоборот).

Например в библиотеке так:

extern "C" void __stdcall __export myfunc(int i);

А в exe так:

typedef void ( *MYFUNC) (int);
MYFUNC myfunc;
HINSTANCE hDll=LoadLibrary("mylib");
myfunc=(MYFUNC)GetProcAddress(hDll,"myfunc");
(*myfunc)(0);

В результате exe загружает библиотеку, определяет адрес функции,
помещает 0 в стек, уменьшив при этом значение в ESP, и вызывает функцию из библиотеки.
Функция что-то делает и увеличивает ESP (т.к. она __stdcall и очистку стека от своих параметров
должна делать сама), а программа этого не знает, т.к.
typedef void ( *MYFUNC) (int);
и опять увеличивает ESP. В результате мы теряем что-то из стека, а остальные элементы сдвигаются.
Самое страшное -- очень часто это не вызывает ВИДИМЫХ ошибок и программа нормально работает,
но достаточно изменить что-то в коде и мы получаем непредсказуемый результат.

Лечится банально:
typedef void (__stdcall *MYFUNC) (int);

Возможен и обратный вариант -- функция из библиотеки НЕ __stdcall. В этом случае получаем мусор в стеке.

А может просто в библиотеке ошибка... или он не те параметры передает.



>> кстати удалил я что то начинающееся на букву х... и повторяющееся 2 раза.. так — на всякий случай

Так это слово пишется везде одинаково smile.gif Я даже в американском фильме видел краской на стене буквами
высотом больше метра smile.gif Хотя есть много похожих слов, например украинское "хай" (пусть)

Вернуться в Флейм