powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DLL from Delphi to Builder
10 сообщений из 10, страница 1 из 1
DLL from Delphi to Builder
    #32306656
anton smirnoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создаю DLL в Делфи
library Project1;
uses
SysUtils,
Classes;
function sum(var x,y:integer):integer;export;stdcall;
begin
result := x + y;
end;
exports
sum;
end

Загружаю её в Билдере

int (__stdcall * func)(int,int);
func = (int ( __stdcall *) (int,int))GetProcAddress(dll_handle, "sum");

всё вроде хорошо, func!=NULL,
но вот вызов функции (ex. func(100,1)) выдаёт аксесс виолейшион
????
...
Рейтинг: 0 / 0
DLL from Delphi to Builder
    #32306843
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про стандарты на вызовы функций слышал? Так вот они разные у Си и Паскаля.
так что в описание фонкций указывай явно стандарт. например stdcall и будешь иметь счастье
...
Рейтинг: 0 / 0
DLL from Delphi to Builder
    #32307071
anton smirnoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на самом деле надо var убрать, наверное,
function sum(x,y:integer):integer;export;stdcall;
но это тоже не помогает

2StarWind
а разве я не поставил stdcall
{
library Project1;
uses
SysUtils,
Classes;
function sum( x,y:integer):integer;export;stdcall
;
begin
result := x + y;
end;
exports
sum;
end

int ( __stdcall * func)(int,int);
func = (int ( __stdcall *) (int,int))GetProcAddress(dll_handle, "sum");
}
...
Рейтинг: 0 / 0
DLL from Delphi to Builder
    #32307461
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
var точно ошибочен.
...
Рейтинг: 0 / 0
DLL from Delphi to Builder
    #32308209
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, не заметил
а спецификация var работает...
например функция CreateThread описание в дельфи Tid потока именно как var
кстате, можно посмотреть как это же описывается в С. В том же самом хелпе на эту функцию. var по идее это указатель на переменную
...
Рейтинг: 0 / 0
DLL from Delphi to Builder
    #32308341
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, но при вызове шаблон процедуры тогда должен в точности повторить этот var, а в данном случае это сделано не было и константы 100 и 1 передались как адреса - вот и AV.
...
Рейтинг: 0 / 0
DLL from Delphi to Builder
    #32308430
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насколько я помню описание var a:integer и a :^integer одно и тоже
...
Рейтинг: 0 / 0
DLL from Delphi to Builder
    #32308464
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не спорьте. Этот топик есть и в С++шном форуме, там уже про var все выяснили.
...
Рейтинг: 0 / 0
DLL from Delphi to Builder
    #32308470
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но вопрос так и не решили (оказалось, что все гораздо сложнее).
...
Рейтинг: 0 / 0
DLL from Delphi to Builder
    #32308474
Дятел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только что проверил. Если убрать var, то все работает, а если хочется с Varom, то и описывать ее в С++ надо с varom:
Код: plaintext
1.
int (__stdcall *func)(int&,int&)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DLL from Delphi to Builder
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]