Главная страница
    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.48 MB
Время: 0.008 c
2-1215946567
Вопросик
2008-07-13 14:56
2008.09.07
Как данные из DBGrid переписать в memo?


2-1217246118
Krem
2008-07-28 15:55
2008.09.07
конец строки для Unix


2-1217263235
Trofim
2008-07-28 20:40
2008.09.07
Почему в QReport появляются пустые листы?


15-1216142835
Guest
2008-07-15 21:27
2008.09.07
Вегетарианство


15-1215362926
AlexDan
2008-07-06 20:48
2008.09.07
Флешка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский