Dunque, dovrei aver capito qualcosa di più o per lo meno sono riuscito ad inserire ApdComPort nella DLL, bastava solo inserire la Uses giusta (AdPort).

Questo è il codice:

uses
ShareMem,
SysUtils {: CoClass},
Classes {: CoClass},
AdPort;


type
TMyObject = class(TObject)
ApdComPort1: TApdComPort;
end;

var
MyObject: TMyObject;

function Connect(): String; export;
begin
MyObject.ApdComPort1.ComNumber := 1;
MyObject.ApdComPort1.Baud := 9600;
MyObject.ApdComPort1.Parity := pNone;
MyObject.ApdComPort1.DataBits := 8;
MyObject.ApdComPort1.StopBits := 1;
MyObject.ApdComPort1.BufferFull := 0;
MyObject.ApdComPort1.BufferResume := 0;
MyObject.ApdComPort1.DeviceLayer := dlWin32;
MyObject.ApdComPort1.DTR := true;
MyObject.ApdComPort1.AutoOpen := true;
MyObject.ApdComPort1.Open := false;
MyObject.ApdComPort1.InitPort;

if MyObject.ApdComPort1.Open then
begin
MyObject.ApdComPort1.PutString('YO!!!');
Result := 'SEI TROPPO FIGO!!';
end
else Result := 'VAI A GIOCARE A BOCCE!!';
end;


Naturalmente non va!
ERRORE: Access violation

Dalla miriade di test e prove che ho fatto per capirci un po di più, ho notato che se commento tutte le proprietà di ApdComPort incluse nella funzione e lascio solo il messaggio di ritorno, il programma funziona correttamente. Probabilmente c'è qualche proprietà errata o più presumibilmente mancante che genera errore ma non saprei quale, mi sembra di averle inserite tutte (o almeno quelle principali) con i dati corretti.

Sapete darmi qualche consiglio?
Grazie