1.在你的project里写一个程序,定义一个如下形式的类:
DEFINE CLASS mydll AS CUSTOM OLEPUBLIC
   var1 = 'test'
   ...
   PROCEDURE Get_var1
      RETURN THIS.var1
   ENDPROC
   ...
ENDDEFINE
2.将项目编译为COM/多线程COM.
------------------------------------------
com是与语言无关的,当然可以被其他语言的程序调用。

解决方案 »

  1.   

    vfp写的com的代码如下:
    DEFINE CLASS hello as Session OLEPUBLIC 
        
        Value = [hhhh]
        DIMENSION Value_COMATTRIB[4]
        Value_COMATTRIB[1] = 0x100000
        Value_COMATTRIB[2] = "我的值"
        Value_COMATTRIB[3] =  "Value"
        Value_COMATTRIB[4] = "string"
    *    Value_COMATTRIB[5] = 1
        PROCEDURE Hello(tcName as String) as String ;
         helpstring "问好你"        
            IF EMPTY(tcName)
               tcName = []
            ENDIF 
            RETURN STR(SECONDS()) + tcName        
        ENDPROC 
        PROCEDURE Value_Access as String     
            RETURN "你是沙比"
        ENDPROC        
    ENDDEFINE 
    *---------------------------------------------
    c#调用vfp写的com:
    //首先要添加外部引用
    com.Hello  lo = new com.HelloClass();
    lo.Hello("coolyylu");
    textBox1.Text  = (string)lo.Valuevb.net调用:
            Dim lo As Object
            lo = CreateObject("com.hello")
            TextBox1.Text = lo.Hello("coolyylu")
    vfp调用
            local lo as object
            lo = CreateObject("com.hello")
            TextBox1.Text = lo.Hello("coolyylu")
    bcb5.5调用vfp的com
            Variant obj = Variant::CreateObject("com.hello");
            Variant loR = obj.OleFunction("Hello" ,txtUrl->Text.Trim().c_str());
      if (!loR.IsNull())
          Application->MessageBox(String(loR).c_str(),"ddd",64);
      

  2.   

    dll形式表现的com是进程内的
    exe是进程外的,另外com+一般通过exe来表现dll只是com的表现形式之一而已.
    com不分语言,但是每种语言调用com的方法,麻烦程度也不一样.