How do I create an object in C++ Builder?

Question:

How do I create an object in C++ Builder?

Answer:

#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
        EXTERN_C const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}

MIDL_DEFINE_GUID(IID, zIID_IChilkatCSP,0xD12FB216,0x99DA,0x4EB3,0x9C,0xC0,0xC0,0xF7,0x60,0xB1,0x74,0xA0);
MIDL_DEFINE_GUID(CLSID, zCLSID_ChilkatCSP,0x71D98090,0x5725,0x48E6,0x96,0xA3,0x2A,0x0A,0xFB,0xC3,0xBC,0x54);

MIDL_DEFINE_GUID(IID, zIID_IChilkatCert,0xD56C1AF1,0x3FDE,0x471C,0x9B,0xC2,0xC5,0x25,0x15,0xF2,0x60,0xC1);
MIDL_DEFINE_GUID(CLSID, zCLSID_ChilkatCert,0xE2A74106,0x0416,0x43D8,0x8F,0xE8,0x83,0x3E,0x9A,0xD0,0x98,0xEA);

MIDL_DEFINE_GUID(IID, zIID_ICkStringArray,0x4340DF8E,0xD7A3,0x4675,0xBE,0x74,0x80,0x07,0x7B,0x2B,0x3E,0x81);
MIDL_DEFINE_GUID(CLSID, zCLSID_CkStringArray,0xBDA7C356,0x183B,0x4A36,0x8C,0xB5,0x43,0x9C,0x95,0x66,0xBE,0x52);

MIDL_DEFINE_GUID(CLSID, zCLSID_ChilkatZip,0xDB92433D,0x1902,0x4789,0xBA,0xFC,0xB4,0x6B,0x0D,0xCD,0xEB,0xB7);
MIDL_DEFINE_GUID(IID, zIID_IChilkatZip,0x950695DA,0x8F77,0x4852,0xAD,0x93,0x8C,0x1E,0x64,0x99,0x5D,0x4B);

MIDL_DEFINE_GUID(IID, zIID_IChilkatEmail2,0xE656B867,0x992C,0x4462,0xA2,0x7D,0xEB,0xE6,0x04,0xEC,0x3A,0x48);
MIDL_DEFINE_GUID(CLSID, zCLSID_ChilkatEmail2,0xA4643A87,0x99A0,0x4404,0x9B,0xC5,0x23,0x22,0xBD,0xD6,0x16,0x37);

MIDL_DEFINE_GUID(IID, zIID_IChilkatMime,0x5ACAE4B8,0x62D9,0x4124,0xA5,0x8A,0x9B,0x12,0x58,0xB7,0x7E,0x99);
MIDL_DEFINE_GUID(CLSID, zCLSID_ChilkatMime,0x0A83AD29,0xEFD3,0x4BD1,0x99,0x7D,0x63,0xC4,0xEA,0xF3,0x94,0x18);

MIDL_DEFINE_GUID(IID, zIID_IChilkatMHT,0x67DF9267,0x7503,0x4E64,0xA0,0xA0,0xAB,0x83,0xC5,0x24,0xBB,0x6C);
MIDL_DEFINE_GUID(CLSID, zCLSID_ChilkatMHT,0x3994A57F,0xCB6E,0x4FC8,0xA6,0xB9,0x7D,0x5A,0x41,0xC3,0x17,0xBF);

MIDL_DEFINE_GUID(IID, zIID_IChilkatXml,0x2A401274,0xF2E0,0x462F,0x8D,0xFC,0x50,0xF8,0xD8,0x67,0x57,0x18);
MIDL_DEFINE_GUID(CLSID, zCLSID_ChilkatXml,0xCE2E4226,0x494A,0x4DB2,0x9B,0x45,0x7C,0x85,0x86,0xCC,0x01,0xA3);

MIDL_DEFINE_GUID(IID, zIID_IChilkatMailMan2,0xCCB7FB40,0x99EC,0x4678,0x92,0x02,0x52,0x79,0x8D,0xA7,0x8A,0xBA);
MIDL_DEFINE_GUID(CLSID, zCLSID_ChilkatMailMan2,0xA46E5261,0x9956,0x4767,0x88,0xCA,0xDF,0xCE,0xD0,0x50,0xD0,0x9E);

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    CoInitialize(0);

    IChilkatEmail2 *iObj = 0;

    CoCreateInstance(zCLSID_ChilkatEmail2,
        NULL,CLSCTX_INPROC_SERVER,
        zIID_IChilkatEmail2,
        (void **)&iObj);

    BSTR bstrSubject = SysAllocString(L"This is the subject");
    iObj->set_Subject(bstrSubject);
    Edit1->Text = iObj->get_Subject();
    SysFreeString(bstrSubject);
}