Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.09.07;
Скачать: [xml.tar.bz2];

Вниз

Прога вылетает при подключениие 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
2-1217419539
D7
2008-07-30 16:05
2008.09.07
FillChar


2-1216971118
lavgirls
2008-07-25 11:31
2008.09.07
Подскажите как запустить exe файл другого приложения


2-1217409328
cyborg
2008-07-30 13:15
2008.09.07
поиск по маске


2-1217305328
petvv
2008-07-29 08:22
2008.09.07
Округление в запросе = Capability not supported ??? (D2007)


1-1198147368
андр
2007-12-20 13:42
2008.09.07
Plug-in





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский