Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

В DLL не работает процедура со строковыми параметрами   Найти похожие ветки 

 
__oleg   (2005-02-07 13:49) [0]

Пишу DLL:

uses ShareMem ...

procedure Test(var S: string; var Res: string);
begin
 Res := S + S;
end;

Пытаюсь вызвать функцию в проекте:

procedure XXX;
var S, Res: string;
begin
 ...
 Test(S, Res);
end;

Вылетает Access violation.
Подскажите, как можно передавать строки в DLL и получать из DLL ?
Заранее спасибо.


 
Юрий Зотов ©   (2005-02-07 14:01) [1]

В EXE вставлено ShareMem тоже?


 
Digitman ©   (2005-02-07 14:01) [2]


> Пытаюсь вызвать функцию в проекте


Sharemem д.б. указан первой позицией в uses обоих dpr.

Либо Sharemem не д.б. указан ни там ни там, но тогда оба проекта д.б. собраны с опцией использования ран-тайм пакетов


 
__oleg   (2005-02-07 14:25) [3]

Уточняю: есть проект-dll:

library RCalc;

uses
 ShareMem, SysUtils,
 Classes, UnitsConv, uSymCodes, uRCalcTypes,
 Math, MyMath, MyFunc, uGasPP, uCalcErr;

{$R *.res}

procedure Test(var S: string; var Res: string);
begin
 Res := S + S;
end;

exports
 Test;
begin
end.

И есть основной проект:

program _test;
uses ShareMem, ...

В главном юните проекта пробую вызывать процедуру из DLL:

procedure TForm1.Button1Click(Sender: TObject);
var C, R: string;
begin
 ...
 C := "ab";
 R := "";
 Test(C, R); // Access violation
end;
...

В обоих проектах опция "Build with runtime...." выключена.


 
Владислав ©   (2005-02-07 14:39) [4]

В главном юните вот это откуда:
Test(C, R); // Access violation
?


 
Digitman ©   (2005-02-07 14:44) [5]


> __oleg


библ-ку RCalc как линкуешь ? динамически ? статически ?
покажи в коде ..


 
__oleg   (2005-02-07 14:50) [6]

Ой ! Забыл указать stdcall при описании процедуры. Каюсь...
Но все равно, спасибо всем !


 
Anatoly Podgoretsky ©   (2005-02-07 14:58) [7]

Это не обязательное условие, ты опять не привел полные данные, объявление процедуры в программе. Должно быть одинаковым и совсем не обязательно stdcall



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

Текущий архив: 2005.02.20;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.041 c
14-1106817355
Vaitek
2005-01-27 12:15
2005.02.20
Школьная геометрия


3-1106207916
Scorpio
2005-01-20 10:58
2005.02.20
Отсеивание даты в SQL


8-1099949995
тт
2004-11-09 00:39
2005.02.20
Формат wav


9-1100346095
Zak3D[@Tm]
2004-11-13 14:41
2005.02.20
Direct3D - Проблема потерянных устройств.


1-1107740278
TReader
2005-02-07 04:37
2005.02.20
Как правильно использовать ReadInteger в TReader ?





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