Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
ВнизСовместимость DLL для delphi и С++ Найти похожие ветки
← →
Ega23 © (2005-02-08 11:47) [0]
library MyDLL;
uses
.....
function AAA(Param1:Cardinal=0):Cardinal; StdCall;
....
exports
AAA name "AAA";
Под C++ значение по-умолчанию пройдёт?
← →
Digitman © (2005-02-08 12:15) [1]
> Под C++ значение по-умолчанию пройдёт?
как же оно "пройдет", если генерация кода для случаев с дифолт-параметрами - прерогатива конкретного компилятора ?
← →
Ega23 © (2005-02-08 12:18) [2]Т.е. так нельзя, надо в явном виде параметр указывать...
Понял.
← →
MBo © (2005-02-08 12:21) [3]Сишные DLL с параметрами по умолчанию используются в Дельфи нормально.
← →
Digitman © (2005-02-08 12:22) [4]
> Понял
радует.
← →
Ega23 © (2005-02-08 12:39) [5]Сишные DLL с параметрами по умолчанию используются в Дельфи нормально.
Тут как раз обратная ситуация. На 95% DLL будет под Делфи использоваться, но вероятность использования её под С++ всё-таки есть...
← →
Eraser © (2005-02-08 12:42) [6]Не забудь поставить директиву cdecl.
← →
Игорь Шевченко © (2005-02-08 12:43) [7]Параметры по умолчанию нужны только во время компиляции, чтобы компилятор при вызове фукнции мог подставить корректные аргументы. И все.
← →
Ega23 © (2005-02-08 12:51) [8]Не забудь поставить директиву cdecl.
В рамках нашей команды StrdCall принят за правило.
← →
MBo © (2005-02-08 12:52) [9]>Тут как раз обратная ситуация.
Если существует стандарт на передачу параметров по умолчанию, то это неважно. К сожалению, о таком соглашении я не знаю.
Однако, например, такая функция из DLL с прототипом из .h-файла:
PXL_API
PimMegaStartPreview(IN HANDLE hImager, // Imager object handle
IN LPSTR title="PL1394 Camera Preview", //window title
IN U32 style=WS_OVERLAPPEDWINDOW|WS_VISIBLE,//style
IN U32 x=0, //left
IN U32 y=0, //top
IN U32 width=-1, //width
IN U32 height=-1, //height
IN HWND parent=NULL, //handle to parent window
IN U32 nId=0, //child window id
IN int PreviewDataThreadPriority=
THREAD_PRIORITY_BELOW_NORMAL, //preview window"s data thread priority
IN int PreviewDrawThreadPriority=
THREAD_PRIORITY_BELOW_NORMAL); //preview window"s draw thread priority
работает в таком виде:
function PimMegaStartPreview(hImager: THandle;
strTitle: PChar = nil;
Style: Integer = WS_OVERLAPPEDWINDOW or WS_VISIBLE;
lLeft: Integer = 0;
lTop: Integer = 0;
lWidth: Integer = -1;
lHeight: Integer = -1;
lParent: Integer = 0;
lChildId: Integer = 0;
lPreviewDataThreadPriority: Integer = THREAD_PRIORITY_BELOW_NORMAL;
lPreviewDrawThreadPriority: Integer = THREAD_PRIORITY_BELOW_NORMAL
): PXL_RETURN_CODE; stdcall;
← →
Ega23 © (2005-02-08 12:57) [10]Если существует стандарт на передачу параметров по умолчанию, то это неважно. К сожалению, о таком соглашении я не знаю.
Очепятка. StdCall
← →
Digitman © (2005-02-08 13:03) [11]
> Ega23
см.
> MBo © (08.02.05 12:52) [9]
и ничего удивительного здесь нет.
любой компилятор в общем случае генерирует код, в рез-те исполнения которого передаются ВСЕ без исключения факт.параметры .. др.вопрос что если некий параметр имеет зн-е по дифолту и в вызове опущен, то компилятор, ИМЕЯ ПРОТОТИП, сгенерирует код, передающий этот параметр со значением, указанным по дифолту
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c