такая вот у меня траблеса...
кто нть сталкивался с сабджем?
нужно собрать для firebird udf библиотеку.
вот чего делаю...
library realtyudf;
uses udf_main;
exports Ansi_Upper name 'AnsiUpper';
begin
Randomize;
end.
//--------------------------------------------
unit udf_main;
interface
uses sysutils;
function Ansi_Upper(Str: PChar): PChar; cdecl; export;
implementation
function Ansi_Upper(Str: PChar): PChar; cdecl;
begin
Ansi_Upper:= PChar(AnsiUpperCase(Str));
end;
end.
---
собирается легко. дальше пытаюсь вызвать функцию из isql -говорит энтрипойнт не найден.
хорошо...
тогда написал тестовую програмульку вызова функции
program testent;
uses sysutils;
function Ansi_Upper(var Str: PChar): PChar; cdecl; external 'realtyudf' name 'AnsiUpper';
var
randomS: array [0..20] of Char;
rng: PChar;
begin
rng := 'Test';
randomS := Ansi_Upper(rng);
Writeln(randomS);
end.
---
при компиляции линкер выдает варнинг что:
/usr/libexec/elf/ld: warning: type and size of dynamic symbol `AnsiUpper' are not defined
---
при выполнении программа сваливается в коре. где грабли не могу понять....
при компиляции использовалcя ключ -Sd - включающий совместимость с дельфи.
|