1.在你的project里写一个程序,定义一个如下形式的类:
DEFINE CLASS mydll AS CUSTOM OLEPUBLIC
var1 = 'test'
...
PROCEDURE Get_var1
RETURN THIS.var1
ENDPROC
...
ENDDEFINE
2.将项目编译为COM/多线程COM.
------------------------------------------
com是与语言无关的,当然可以被其他语言的程序调用。
DEFINE CLASS mydll AS CUSTOM OLEPUBLIC
var1 = 'test'
...
PROCEDURE Get_var1
RETURN THIS.var1
ENDPROC
...
ENDDEFINE
2.将项目编译为COM/多线程COM.
------------------------------------------
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);
exe是进程外的,另外com+一般通过exe来表现dll只是com的表现形式之一而已.
com不分语言,但是每种语言调用com的方法,麻烦程度也不一样.