Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.07;
Скачать: CL | DM;

Вниз

Прога вылетает при подключениие dll в vista   Найти похожие ветки 

 
agress0r ©   (2008-07-26 14:44) [0]

Привет всем
Вот прогу написал с использованием своей dll. Все компилируется, но при вызове функций программа вылетает. Сначала искал у себя ошибки. Но когда функция стала типа result:= 2+2; то понял что глючу не я а Виста. Отсюда вопрос как в висте можно dll подключить? (проверил на xp, все работает)


 
Loginov Dmitry ©   (2008-07-26 14:50) [1]

> Отсюда вопрос как в висте можно dll подключить? (проверил
> на xp, все работает)


Очевидно, LoadLibrary(). Если не работает, то глючит DLL, а не виста.

Как функция объявлена в ЕХЕ и как она объявлена в DLL?


 
agress0r ©   (2008-07-26 16:12) [2]

Объявлены самым простым способом, работало всю жизнь пока на висту не сел:

в DLL: exports FunctionName() index 1;
в EXE: FunctionName();stdcall;external "filename.dll" index 1;


 
{RASkov} ©   (2008-07-26 16:27) [3]

> [2] agress0r ©   (26.07.08 16:12)

index оставлен вроде как для совместимости с 16 битными...
можно убрать его...

> stdcall

и "там" и "тут"? Т.е. и в dll и в exe
Подозрительно, что

> (проверил на xp, все работает)

Что-то тут не чисто :)


 
Anatoly Podgoretsky ©   (2008-07-26 17:11) [4]

> agress0r  (26.07.2008 16:12:02)  [2]

И после этого Виста виновата :-)


 
agress0r ©   (2008-07-27 16:42) [5]

Вот только сейчас время появилось снова разобраться с этим)

Теперь все грузится через LoadLibrary

Но:
1) если в dll функция объявлена через stdcall (так как я где то прочитал), то     прога просто вылетает

2) если в dll функция объявлена без stdcall, то прога НЕ вылетает, функция срабатывает, но выдается сообщение "Invalid Pointer Operation"

3) а дальше я вообще не понимаю:
когда я первый раз написал через loadlibrary, то забыл дописать FreeLibrary(...), а когда все таки дописал, то получилось аналогично пункту "2",
но вместо "Invalid Pointer Operation" выдает
"Access violation at address xxx in module "project1.exe". Read of address yyy"

Может просто Delphi6 с вистой не совместима? Потому что как я уже писал в XP все работает


 
sniknik ©   (2008-07-27 16:50) [6]

> Может просто Delphi6 с вистой не совместима?
это скорее ты с программированием не совместим...

> Потому что как я уже писал в XP все работает
то что ты пишешь это одно, показанный же код это другое, он в XP без глюков работать не будет.
кому верить?


 
Anatoly Podgoretsky ©   (2008-07-27 17:03) [7]

> agress0r  (27.07.2008 16:42:05)  [5]

Пока это ты с Вистой не совместим.


 
Сергей М. ©   (2008-07-27 18:35) [8]


> функция объявлена через stdcall (так как я где то прочитал)


А если бы ты где-то прочитал "объявить функцию через ж.", то так и объявил бы ?)

Голова она дана не только для того чтобы жевать, но иногда и думать, что, зачем, почему и для чего ты пишешь.


 
Правильный$Вася   (2008-07-27 20:24) [9]

соглашение о вызовах должно быть именно соглашением, а не ультиматумом
а по-русски: если функция имеет, например, stdcall в dll, то и вызываться она должна так же, с stdcall


 
Amoeba ©   (2008-07-28 01:05) [10]

Если DLL может использоваться только в приложениях, написанных на Delphi, то использовать stdcall не имеет ни малейшего смысла.


 
agress0r ©   (2008-07-28 13:15) [11]

короче все с вами ясно... не хотите помогать. вместо string использовал PChar все заработало.


 
Игорь Шевченко ©   (2008-07-28 13:18) [12]


> вместо string использовал PChar все заработало.


Это иллюзия


 
Anatoly Podgoretsky ©   (2008-07-28 13:20) [13]

Так у тебя еще и string и конечно комментарий, как положено правильному пацану выкинул не читая, поскольку нефиг

http://www.podgoretsky.com/OtherParts/DM/BadTips.aspx


 
stas ©   (2008-07-28 17:07) [14]

agress0r ©   (28.07.08 13:15) [11]
Интересно как же это могло на xp работать?


 
Тын-Дын ©   (2008-07-28 18:24) [15]


> stas ©   (28.07.08 17:07) [14]
> agress0r ©   (28.07.08 13:15) [11] Интересно как же это
> могло на xp работать?


Так автор так ин е сказал, что "это" у него не работает.-)



Страницы: 1 вся ветка

Текущий архив: 2008.09.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
15-1216360697
Ega23
2008-07-18 09:58
2008.09.07
Рассылка от CodeGear (или как оно щас там)?


15-1216283532
Petr V. Abramov
2008-07-17 12:32
2008.09.07
qip и русские буквы


2-1217335816
Mops
2008-07-29 16:50
2008.09.07
1251 в UTF


2-1217144058
krem
2008-07-27 11:34
2008.09.07
динамический массив


4-1195566682
Новый_
2007-11-20 16:51
2008.09.07
Flash USB