Ja, her skal du benytte DLL's eller SO-filer.
Men hvis du har tænkt dig at benytte klasser, skal du passe på.
For da DLL's jo er C, benytter man jo normalt header-filerne til at definere klassernes størrelse, så man alligevel kan benytte klasser i C++, men hvis du definerer de samme klasser i Object Pascal, er det ikke nødvendigvis nøjagtig de samme data strukturer (her mener jeg både størrelse og orden af dataene indeni - det eneste, du reelt kan kontrollere med parametre, er byte padding inde i klassen), idet kompilere jo kan opføre sig temmelig forskelligt på det punkt.
Men hvis du bare skal kombinere C og Pascal, burde det slet ikke være noget problem...
Tja, et eksempel?
C++ DLL (Sample.dll)
Benytter fastcall kaldekonventionen, da det er Delphi's standard (men det er jo lige meget, om du benytter cdecl eller fastcall ved denne funktion, da der returneres i det samme register ved begge).
__declspec(dllexport) int __fascall GetInteger()
{
return 1;
}
Delphi implementering (funktionens deklaration):
function GetInteger : integer; external 'Sample.dll';
1101110100010110000101000001
Killers don't end up in jail - they end up on a high-score!
[Redigeret d. 15/02-06 17:56:06 af Nicolai Lyster Fersner]