Hej,
Jeg har en DLL som jeg gerne vil anvende nogle funktioner i. DLL'en er 
en wrapper for nogle low-level bluetooth funktioner. Mit problem er at 
en af de vigtige funktioner returnere en object af en "ukendt" klasse. 
Eller dvs at jeg har definitionen af klassen i C++, men hvordan får jeg 
den ind i Delphi?
Lidt simplificeret så har jeg følgende stående i dokumentationen:
int _stdcall InitBMDll(char* dllName)
CInquiry* _stdcall GetCInquiry()
int _stdcall CleanBMDll()
Dette har jeg så omsat til delphi:
function InitLibrary(dllName: pchar): integer; stdcall; external 
'BM_Dll.dll' name 'InitBMDll';
function GetCInquiry: pointer; stdcall; external 'BM_Dll.dll';
function CleanBMDll: integer; stdcall; external 'BM_Dll.dll';
Både initializeringen og "oprydningen" fungere fint (der findes 
yderligere nogle funktioner i DLL'en som jeg kan bruge til tests, så jeg 
ved det virker)...
MEN, hvordan hulen skal jeg kunne bruge den pointer jeg får tilbage fra 
GetCInquiry?
Jeg har klassedefinitionen i C, men det kan vel ikke rigtigt hjælpe mig, 
kan det? Den er rimlig stor, men kommer her alligevel:
**********Klippet direkte fra dokumentationen**********
// Device inquiry & pairing
class BARAMAN3_API CInquiry
{
public:
 static CInquiry* GetInstance();
 // Pairing related functions
 typedef enum {
  SUCCESS,
  ALREADY_BONDED,
  BAD_PARAMETER,
  FAIL
 } BOND_RETURN_CODE;
 virtual BOND_RETURN_CODE Bond(BD_ADDR bda, LPTSTR pin_code) const;
 virtual BOOL BondQuery(BD_ADDR bda) const;
 virtual BOOL UnBond(BD_ADDR bda) const;
 // Is device ready
 virtual BOOL GetLocalDevice(BD_ADDR bda = NULL) const;
 // Device discovery
 virtual BOOL StartFindDevices(const BOOL flush = TRUE, const DEV_CLASS 
devClass = DummyClass);
 virtual void StopFindDevices();
 virtual int GetInquiryCount() const;
 virtual int GetNext(const int ind, BD_NAME name, BD_ADDR bda, DEV_CLASS 
cl) const;
 typedef enum {
  SPP,
  HST,
  A2DP,
  DUN,
 } SERVICE_TYPE;
 // Service discovery
 virtual BOOL StartDiscoverServices(BD_ADDR adr, SERVICE_TYPE type);
 virtual int GetSppServicesInfo(const BD_ADDR BdAddr, UINT8 &scn, TCHAR* 
serviceName);
 // Parent window registration
 virtual void RegisterWindow(const HWND hwnd);
 // Autoconnect
 virtual void SetAutoConnectManager(CAutoConnect* pManager);
 // SPP GUID
 static const GUID guid_SERVCLASS_SERIAL_PORT;
 // HST GUID
 static const GUID guid_SERVCLASS_HEADSET;
 // DUN GUID
 static const GUID guid_SERVCLASS_DIALUP_NETWORKING;
 // A2DP GUID
 static const GUID guid_SERVCLASS_A2DP;
#ifdef _COMONE_PLATFORM
 // Baracoda internal use
 virtual void SetDelegate(BaracodaPtrType ptr) { m_Delegate = ptr; }
 virtual void SetPINDelegate(PINPtrType ptr) { m_PINDelegate = ptr; }
 virtual void SetDeviceFoundDelegate(PINPtrType ptr) { m_DFDelegate = 
ptr; }
#endif
private:
 // Singleton
 CInquiry();
    CInquiry(const CInquiry&);
    CInquiry& operator= (const CInquiry&);
 ~CInquiry();
 static CInquiry* instance;
 void OnDeviceResponded(const BD_ADDR bda, const DEV_CLASS devClass, 
const BD_NAME bdName, const BOOL bConnected);
 void OnInquiryComplete(const BOOL success, const short num_responses);
 void OnDiscoveryComplete();
 BOOL SetLinkTimeout(BD_ADDR bda, UINT8 tmo);
 GUID m_pServiceGuid;
 HWND m_RemoteHwnd;
 CAutoConnect* m_pManager;
#ifdef BARAMAN3_API
 friend BARAMAN3_API int _stdcall BMUnRegister();
#endif
 friend class CBlueIf;
 friend class CBtDevice;
 CBlueIf* m_BtIf;
 int   m_NumDevices;
 CBdInfo* m_pDevInfo[MAX_SERVER_DEVICES];
#ifdef _COMONE_PLATFORM
 friend void GAP_Event_Handler(unsigned long msgType, void* msg);
 BaracodaDelegate m_Delegate;
 PINDelegate   m_PINDelegate;
 PINPtrType   m_DFDelegate;
#endif
};
********Slut på klip********
Når det er almindelige typer der skal konverteres(int, strings osv) så 
plejer jeg at kunne få tingene til at passe. Men med klasser bliver det 
pludselig en anden sag, jeg kan slet ikke gennemskue hvordan jeg på 
nogen måde kan få alt ovenstående til at passe...hvis bare en ting er 
forkert "vil hele læsset jo vælte", ik?
Hvordan bør jeg gribe dette an?
Alle former for input, tanker, etc. er yderst velkommen da jeg er på 
helt bar bund her
På forhånd tak....
MVH
  Thomas