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

Вниз

stdcall в D5 & D7...   Найти похожие ветки 

 
Jolik ©   (2004-09-28 12:17) [0]

Такая проблема:
есть проект, использует плугины в виде DLL. Все вызовы stdcall. Когда само приложение и DLL (и плугины) скомпилены в Delphi5 - все ОК. Если приложение скомпилить в Delphi7 а DLL оставить старые (скомпиленные в D5) - возникает ошибка доступа к памяти. Трассировка показывает, что ошибка при выходе из проц.расположенной в DLL - явно проблемы с типом вызова. Если плугиины перекомпилить в D7 все становится ОК. Неужели в D5 и D7 отличаются вызовы stdcall? Что предпринять?
Всякие выравнивания и оптимизации отключены...
Спасибо!


 
Lin7   (2004-09-28 12:25) [1]

У меня exe-шник собирается на D7, а все Dll и плагины на D6 - проблем никаких...


 
Amoeba ©   (2004-09-28 12:30) [2]

stdcall он и в Африке stdcall. А ошибка у тебя в 17-й строке твоего кода.


 
Jolik ©   (2004-09-28 12:43) [3]

Я тоже так считал, что "stdcall он и в Африке stdcall". Даже DLL из VC++ подключал - все было ОК. А тут... Может Д5 и Д6 отличаются?
Ладно - будем считать что ошибка у меня в "17 строке"... Кстати - это прикол такой?


 
DiamondShark ©   (2004-09-28 12:50) [4]

Ты бы хоть заголовки функций показал...


 
Digitman ©   (2004-09-28 13:06) [5]


> есть проект, использует плугины в виде DLL


проект дельфийский ? плагины - тоже дельфийские ? а нашута stdcall тогда ? щоб було ? или патамушта где-то когда-то у кого-то видел подобное в коде ?
убирай их нафих отовсюду, они как мертвому припарка


> возникает ошибка доступа к памяти


убирай ран-тайм пакеты из опций сборки ДЛЛ - будет тебе счастье, надеюсь


 
Jolik ©   (2004-09-28 13:08) [6]

В осн. программе:


type
 TCompCreate         = function (AOwner: TControl; AName : PChar; AID : integer) : integer; StdCall;

var
 FCompCreate : TCompCreate;

begin
...
 @FCompCreate := GetProcAddress(FLibHandle, COMP_CREATE_FUNC_NAME);
     if @FCompCreate = nil then
       raise EComponentLibError.CreateFmt(
         "Error %d to link "%s" library", [GetLastError, COMP_CREATE_FUNC_NAME]);
...
end;



В DLL:


function ComponentCreate(AOwner: TControl; AName : PChar;
 AID : integer) : integer; StdCall; export;
begin
...
end;

exports
...
 ComponentCreate,
...
;



 
DiamondShark ©   (2004-09-28 13:10) [7]

Ыть...
Какие, нафиг, TControl между разными версиями?


 
Digitman ©   (2004-09-28 13:17) [8]

точно ... stdcall понавтыкал без башни, просто "щоб було"


 
Jolik ©   (2004-09-28 13:32) [9]

stdcall "патамушта" некоторые функции вызываю из VC (безопасные конечно, без дельфийских классов) Потом точно запутаешься, где стивил стдкалл где нет - вот везде и поставил.

А за TControl спасибо... И как я раньше не догадался :)))


 
Amoeba ©   (2004-09-28 13:37) [10]


> А за TControl спасибо... И как я раньше не догадался :)))

А следовало бы...


 
Mim1 ©   (2004-09-28 18:03) [11]


> integer; StdCall; export;

и это наверное тоже отбалды потомучто видел гдето :)


 
Guru AV   (2004-09-29 00:07) [12]

:)
а ещё нада,
StdCall; far; export;
тоже где-то видел...


 
Amoeba ©   (2004-09-29 11:12) [13]


> Guru AV   (29.09.04 00:07) [12]

Директива far абсолютно ни к чему, поскольку она просто игнорируется компилятором (она оставлена лишь для обратной совместимости при использовании исходного кода написанного для 16-разрядной Windows).



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

Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
14-1096530739
1008
2004-09-30 11:52
2004.10.17
Есть возомжность обзавестись, не знаю надо ли


6-1092369493
piople
2004-08-13 07:58
2004.10.17
Удаление тэгов из HTML странички


3-1095653576
FasetByte
2004-09-20 08:12
2004.10.17
Grid index out of range


14-1096293082
DiamondShark
2004-09-27 17:51
2004.10.17
Беглый взгляд на первую страницу.


3-1095922679
*Pavel
2004-09-23 10:57
2004.10.17
Подключение существующей БД в MSSQL 2000





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