IngvarII |
Отправлено: 12.08.2005, 14:05 |
|
Не зарегистрирован
|
Народ, Помогите!!!
После добавления в проект вызовов DLL-ки в отладчике получаю
App faulted- access violation at adr .... write of address 0x00000000 |
|
olegenty |
Отправлено: 12.08.2005, 15:08 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
я бы и рад, но данных маловато...
|
|
Vlad |
Отправлено: 12.08.2005, 17:14 |
|
Машинист паровоза
Группа: Участник
Сообщений: 231
|
"Помогите!!, а что помочь — тишина в ответ" Ребята, задавайте конкретные вопросы! А то как то все ваши вопросы получаются типа "помоги, а что не знаю, но главное помоги!" |
|
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 "неизвестных" языках написать
перевод того что осталось после редактирования:
CODE |
проверь внимательно адреса которые используешь |
Отредактировано Иван — 18/08/2005, 09:26
|
|
Vlad |
Отправлено: 18.08.2005, 09:37 |
|
Машинист паровоза
Группа: Участник
Сообщений: 231
|
ну можем читать, по русски, укрански, болгарском, белорусском, не много на польском. Кто еще что подскажет? |
|
Иван |
Отправлено: 18.08.2005, 10:15 |
|
Машинист паровоза
Группа: Участник
Сообщений: 207
|
+ гагаузский, турецкий, молдавский (румынский)
sorry...
Отредактировано Иван — 18/08/2005, 10:17
|
|
AVC |
Отправлено: 18.08.2005, 12:07 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Может пора тему во флейм перенести? А? |
|
esh |
Отправлено: 18.08.2005, 21:04 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 71
|
Тобі цікаво, чи зможуть відвідувачі форуму читати текст на українській мові? Мені теж. Гадаю що зможуть. Я на білоруському форумі читав , але там як і на українських форумах 99% на російській мові.
Георгій, ну як? Зміг прочитати? |
|
Георгий |
Отправлено: 18.08.2005, 22:29 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
QUOTE (esh @ 18/08/2005, 22:04) | Тобі цікаво, чи зможуть відвідувачі форуму читати текст на українській мові? Мені теж. Гадаю що зможуть. Я на білоруському форумі читав , але там як і на українських форумах 99% на російській мові.
Георгій, ну як? Зміг прочитати? |
у меня дед хохол
кстати удалил я что то начинающееся на букву х... и повторяющееся 2 раза.. так — на всякий случай
похоже погорячился — извините
Давайте лучше на вопрос ответим?
спирим, что ему функция получения адреса функции в dll вернула ноль потому чтоон забыл extern "C" поднисать
Отредактировано Георгий — 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 раза.. так — на всякий случай
Так это слово пишется везде одинаково Я даже в американском фильме видел краской на стене буквами
высотом больше метра Хотя есть много похожих слов, например украинское "хай" (пусть) |
|