Listing 3

#include "TradingSystemImpl.h" // includes jni.h

#define INITGUIDS
#include "stdafx.h"
#include <ole2.h>
#include <ole2ver.h>
#include "stdlib.h"

// The GUIDs for using the ITradeStock interface 
const IID IID_ITradeStock = {0x326E68F3,0x6376,0x4A32,
                            {0xA0,0xA5,0xDD,0x37,0x02,0x6C,0xCC,0x3C}};
const IID LIBID_TRADINGSYSTEMLib = {0x81C64ABD,0xEDBB,0x492D,
                                   {0xB6,0x22,0xC6,0x2E,0x6F,0x68,0x0F,0xC3}};
const CLSID CLSID_TradeStock = {0x0D46CA8E,0x90A1,0x4F1F,
                                   {0xAE,0xBD,0x08,0xAB,0x32,0x10,0x93,0xF6}};
BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, 
                                                       LPVOID lpReserved)
{
    if ( FAILED ( CoInitialize(NULL) ) )
        return FALSE;
    return TRUE;
}
ITradeStock* GetTradeStockRef() 
{
    ITradeStock* pITradeStock = NULL;
    CoCreateInstance(CLSID_TradeStock, NULL, CLSCTX_LOCAL_SERVER, 
                     IID_ITradeStock, (VOID**)&pITradeStock);
    return pITradeStock; 
}
void ReleaseTradeStockRef(ITradeStock* pITradeStock) 
{
    if (pITradeStock ) pITradeStock->Release();
}
/* Class:     TradeStockImpl
 * Method:    doBuy
 * Signature: (Ljava/lang/String;I)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL 
    Java_TradeStockImpl_doBuy(JNIEnv * env, jobject me, jstring Stock, 
                              jint Shares) 
{
    // ...
}
 ...