Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Вниз

В 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.029 c
14-1107154410
КаПиБаРа
2005-01-31 09:53
2005.02.20
Вопрос про Half Life


6-1102619223
Алена М.
2004-12-09 22:07
2005.02.20
Сетевой пароль


9-1100785213
Вась-Вась
2004-11-18 16:40
2005.02.20
Проблемы с заголовочными файлами DirectX SDK!


14-1106937657
nikkie
2005-01-28 21:40
2005.02.20
вдруг сообразил, что моему хомяку 2 года!


1-1107845162
Ega23
2005-02-08 09:46
2005.02.20
Финальная сборка DLL





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