![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с dll
Ivanov © (2006-09-11 00:37:00)Мастера, подскажите: пытаюсь передать из dll переменную типа string, а в результате - Access Violation. Кто знает в чем причина, подскажите.
В библиотеке значится следующее:
....
function Text1(c: String): String; stdcall;
begin
c := 'first';
Result := c;
end;
....
exports
....
Text1;
А в исполнимом файле:
.....
TText = function(c: String): string; stdcall;
....
Text1: TText;
....
var
i: String;
....
a := LoadLibrary('1.DLL');
if a <> 0 then
begin
@Text1 := GetProcAddress(a, 'Text1');
if @Text1 <> nil then
i := Text1(c);
....
Компилируется без проблем, а при запуске "Access Violation".
Palladin (2006-09-11 10:43:00) [21]zamtmn сказал нельзя, значит zamtmn'у нельзя... остальным можно :)
Ega23 (2006-09-11 10:09:00) [22]
> а какая разница pchar или string, всеравно нельзя изменять
> в exe pchar созданый в dll и наоборот.
Интересное кино... Вот всё время можно было, а сегодня, в честь пятилетней годовщины терактов стало нельзя.
zamtmn (2006-09-11 08:09:00) [23]лучше shortstring или пересмотреть архитектуру чтоб выделенье/перераспределенье памяти происходило в одном модуле
zamtmn (2006-09-11 08:06:00) [24]а какая разница pchar или string, всеравно нельзя изменять в exe pchar созданый в dll и наоборот.
PSPF2003 (2006-09-11 08:02:00) [25]Присоединяюсь к [2]
Германн (2006-09-11 00:57:00) [26]И всё-таки лучше в dll использовать роднойPChar, imho.
Юрий Зотов (2006-09-11 00:41:00) [27]ShareMem.
А комментарии читать надо. В Borland'е все же не дураки сидят, просто так не влепили бы.