Форум: "Основная";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
ВнизМассив в длл и обратно Найти похожие ветки
← →
murtix (2005-07-18 02:30) [0]Вот этот код не работает
;--------ПРОГРАММА-----------------
TRealArray = array of Double;
TFuncProc = procedure (var x,y : TRealArray);
....
LibHandle := LoadLibrary(PChar(PlugInsPath + Plugins[i].PlFileName));
if LibHandle >= 32 then
@funcName := GetProcAddress(LibHandle, PChar(Plugins[i].PlugNames[j]));
if @funcName <> nil then begin
SetLength(x, 5000);
SetLength(y, 5000);
ShowMessage("000");
funcName(x, y);
;длл загружается, но когда дело доходит до вычислений, происходит Access violation
ShowMessage(SysErrorMessage(GetLastError));
end;
FreeLibrary(LibHandle);
;--------ДЛЛ-----------------
procedure Fxt_func(var Ax,Ay : TRealArray); stdcall;
Вопрос: почему? Или подскажите,пожалуйста, другой способ.
← →
Германн © (2005-07-18 02:35) [1]Скорее всего опять ShareMem :(
О сколько раз твердили миру, что надо читать, то что написано!
← →
Юрий Зотов © (2005-07-18 04:03) [2]Во-первых, проверьте использование ShareMem.
Во-вторых, несогласованы соглашения о вызове: в DLL стоит stdcall, в EXE его нет.
← →
Anatoly Podgoretsky © (2005-07-18 09:22) [3]Во-первых, проверьте использование ShareMem.
Во-вторых, несогласованы соглашения о вызове: в DLL стоит stdcall, в EXE его нет.
В третьих нежелание автора сотрудничать
← →
murtix (2005-07-18 22:20) [4]Германн
Что за ShareMem как его использовать.
Юрий Зотов
Во-вторых, несогласованы соглашения о вызове: в DLL стоит stdcall, в EXE его нет.
Разве для LoadLibrary это нужно, ведь длл запускается функция вызывается.
Anatoly Podgoretsky
В третьих нежелание автора сотрудничать
я весь день был на работе :(
← →
Anatoly Podgoretsky © (2005-07-18 22:24) [5]murtix (18.07.05 22:20) [4]
Даже если бы не было параметро, то все равно стоит согласовывать вызов.
← →
Юрий Зотов © (2005-07-18 22:26) [6]> murtix (18.07.05 22:20) [4]
> Что за ShareMem как его использовать.
А справка не работает?
> Разве для LoadLibrary это нужно, ведь длл запускается функция
> вызывается.
Зачем использовать незнакомые конструкции? Уберите stdcall совсем, в данном случае оно не нужно.
← →
murtix (2005-07-19 00:02) [7]Юрий Зотов
Не работает, битая дельфя (пираты рулят):(
stdcall убрал, работает, тока при закрытии программы происходит ошибка :( щас будем выяснять.
← →
Юрий Зотов © (2005-07-19 00:23) [8]> murtix (19.07.05 00:02) [7]
При чем тут битая дельфя и пираты - так и не понял. А то, что "при закрытии программы происходит ошибка" - вот это очень похоже на отсутствие (или неверное использование) ShareMem. Особенно, если это ошибка 216 или 217.
← →
murtix (2005-07-19 00:33) [9]В общем пиратская дельфя не устанавливается хелп, не знаю почему дернул меня черт установить 2005.
А ошибка : Runtime Error 216 at 004032E6? блин.
А ShareMem у меня отсутсвует, может хотябы намекнете.
← →
alex-drob (2005-07-19 00:39) [10]А про Sharemem написанно при создании новой dll в коментарии.
В длл в uses пишешь sharemem, первым. И в программе project -> view source тоже sharemem.
← →
murtix (2005-07-19 00:49) [11]Спасибо работает никаких Runtime Error 216 :).
Кстати а что будет если я захочу подключить длл написанные на других языках С, асм?
← →
Юрий Зотов © (2005-07-19 00:56) [12]> murtix (19.07.05 00:49) [11]
> что будет если я захочу подключить длл написанные на других
> языках С, асм?
Создайте новую DLL и прочтите в ее коде длинный-длинный комментарий. Там все и узнаете.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.055 c