Mivel nem igazán jön válasz a témához, itt egy kis kiegészítés hogy eddig miket nézegettem a témával kapcsolatban:
1)
www.progdigy.com/forums/viewtopic.php?t=4987&sid=d39a410ee6439cc2fe556868be6855a1
Itt egy PAEz nick nevű felhasználó futott bele hasonló problémába még 2011. júliusában.
Az ő problémája konkrétan ez:
superobject.pas(122,18) Error: No matching implementation for interface method "IUnknown.QueryInterface(constref TGuid,out <Formal type>):LongInt; StdCall;" found
Line 120-124
type
// forward declarations
TSuperObject = class; //<- error line
ISuperObject = interface;
TSuperArray = class;
PAEz ezt a verziót használta:
Lazarus 0.9.31
SVN 30522
FPC 2.5.1
Erre a problémára egy Tankard nick nevű felhasználó válaszolt 2011 dec. 21-én.
Az ő válasza ez volt:
Az fpc 2.5.1.-es verzióban megváltoztatták ezt a funkciót ... és itt megadja a QueryInterface aktuális deklarációját.
Ezen kívül említ még valami superobject.pas fájlt és ott valami "const to constref[/b]" ami nekem nem mond semmit. Gondolom itt az fpc forrásáról beszél.
Egyébként nekem az adott QueryInterface függvény az objpash.inc fájlba van (ami itt található: \lazarus\fpc\2.6.0\source\rtl\inc könyvtárba van:
IUnknown = interface
function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} iid : tguid;out obj) : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
function _AddRef : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
function _Release : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
end;
Ebből sajnos nem lettem okosabb.
2)
sourceforge.net/tracker/index.php?func=detail&aid=3096230&group_id=29749&atid=397251
Itt is foglalkoznak a témával és itt is gyakorlatilag azt tanácsolják, hogy frissebb fpc-t használjon.
Ezen kívül van még pár hasonló eset, ahol frisebb fpc-t javasolnak, ill. vannak olyan esetek, amikor komponenseknél tanácsolják, hogy frisebbet használjanak.
Nálam a probléma az, hogy én a legfrisebb fpc-t használom, és semmilyen beállítást nem változtattam a lazarusban (talán pont ez a gond), és csak egy sima IInterface-t szeretnék használni, de nem jön össze.