Męczę się z kawałkiem kodu poniżej i nie mogę wywołać funkcji z dll-ki rejestrowalnej

w bibliotece funkcja którą chcę wywołać jest wyeksportowana w następujący sposób

 [id(9), helpstring("method getFNames")] void getFNames(BSTR* fiscalNames);

funckcję wywołuję i to nie przynosi żadnego efektu, 'lista' zawsze jest pusta :(

wxVariant v = m_fisc.CallMethod("getFNames",lista);

Co dziwne jeśli zamiast nazwy "getFNames" podstawię "kukuryku" to nie mam żadnego błędu
Jak to naprawdę powinno wywoływać się z wykorzystaniem wxWidgets


Może jest jakiś prosty sposób co by biblioteki dll (com) w prosty sposób utworzyć klasę, tak jak to się robi w Delphi poprzez import biblioteki - tworzy unit.

#ifndef WRAPPERACTIVEX_H
#define WRAPPERACTIVEX_H

	#include <wx/wx.h>
	#include <wx/dialog.h>
	
#include "wx/mediactrl.h"       // wxMediaBackendCommonBase
#include "wx/msw/ole/activex.h" // wxActiveXContainer
#include "wx/msw/ole/automtn.h" // wxAutomationObject
#include "wx/msw/ole/uuid.h"

const IID   DIID__FDriver  = {0x4DA4BA91,0xC2A7,0x4401,{0xB7,0xA3,0x0C,0x04,0xB5,0xCC,0x4E,0x5C}};
const CLSID CLSID_FDriver  = {0x19010E45,0xD0C0,0x4B36,{0xAE,0x7c,0xeb,0xa7,0x02,0x8b,0x1f,0xfd}};

class WrapperActiveX
{
	public:
		WrapperActiveX(wxWindow *pparent) {
            parent=pparent;
            };

		~WrapperActiveX()
        {
     	 if (pDispatch)
    	 {
    		((IUnknown*)pDispatch)->Release();
    		CoFreeUnusedLibraries();
    		//CoFreeAllLibraries
    		wxMessageBox("Zwolnienie");
    	 }         
        };
        
        bool init()
        {
            //IDispatch* pDispatch=0;
            pDispatch=0;
            if( CoCreateInstance(CLSID_FDriver,
                                 NULL,
                                 CLSCTX_INPROC_SERVER,
                                 DIID__FDriver, (void**)&pDispatch) != 0 )
                return false;
            
            //poniżej działa
//            pDispatch=static_cast<IDispatch*>(m_fisc.GetDispatchPtr());
//            if (m_fisc.GetInstance("Excel.Application"))
//            {
//                m_fisc.PutProperty("ActiveCell.Font.Bold", true);
//                wxMessageBox("Excel");
//            };
            return true;
        };

        wxString ListFDriver()
        {
            unsigned char *lista=0;
            
            wxVariant v = m_fisc.CallMethod("getFNames",lista);

            if (lista)
            {
             wxMessageBox(wxString::Format("załadowano %s",lista));
             delete [] lista;
            };
            
            return "";
        };

        //Uuid uuid_fisc;
        //wxActiveXContainer* m_pAX;
        wxAutomationObject m_fisc;
        wxWindow *parent;
        IDispatch* pDispatch;
};

#endif // WRAPPERACTIVEX_H