Форум: "Основная";
Текущий архив: 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.046 c