Step 1: Describe the extension

The class that implements the creator, called CJavaVM in the following example, must export the PBX_GetDescription function. It inherits from NonVisualObject and has two functions, CreateJavaObject and CreateJavaVM:

PBXEXPORT LPCTSTR PBXCALL PBX_GetDescription()
{
  static const TCHAR desc[] = {
    "class javavm from nonvisualobject\n" 
    "function long createjavavm(string classpath,
       string properties[])\n" 
    "function long createjavaobject(ref powerobject
       proxyobject, readonly string javaclassname,
       readonly string proxyname)\n" 
    "end class\n" 
  };
  return desc;
}