部署为COM+组件后,不能使用NEW操作符,必须使用: dim obj as Object set obj=CreateObject(Ex1.Class,"YourServerName") obj.pro="pro" 如果还是出现429错误,请在win98的机器上手工注册此Active Dll 组件。
你编译dll的时候在工程属性中有一个选项, 部件>>远程服务器文件这个选项打上钩 这样,会编译出一个vbr文件 用C:\Program Files\Microsoft Visual Studio\Common\Tools\Clireg clireg32.exe在客户端机器上注册vbr 文件。 你用createobject时可以不指定服务器名 也可以在客户端引用dll的类型库,这样,你在客户端可以用 dim x as new cls了 to :回复人: CGS(游侠) ( ) 信誉:100 2002-2-25 12:37:28 得分:0 部署为COM+组件后,不能使用NEW操作符,必须使用: 这是错误的观点
做了个实验 active dll工程名dllTestGetTime,未选择remote server files cTestGetTime.cls VERSION 1.0 CLASS BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "cTestGetTime" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = TruePublic Function Gettime() As String Gettime = CStr(Now) End Function客户端工程 Sub main() Dim aaa As cTestGetTime Set aaa = New cTestGetTime MsgBox aaa.gettime Set aaa = Nothing End Sub安装顺序, 编译dll生成dlltestgettime.dll ->copy to server ->组件服务添加组件dlltestgettime.dll ->启动组件->导出安装包(应用程序代理,非服务应用程序) ->在林一台机器上安装 ->建立新的vb工程,引用dlltestgettime,输入测试代码并运行,一切正常。 我的环境是win2000->win2000
dim obj as Object
set obj=CreateObject(Ex1.Class,"YourServerName")
obj.pro="pro"
如果还是出现429错误,请在win98的机器上手工注册此Active Dll 组件。
部件>>远程服务器文件这个选项打上钩
这样,会编译出一个vbr文件
用C:\Program Files\Microsoft Visual Studio\Common\Tools\Clireg
clireg32.exe在客户端机器上注册vbr 文件。
你用createobject时可以不指定服务器名
也可以在客户端引用dll的类型库,这样,你在客户端可以用
dim x as new cls了
to :回复人: CGS(游侠) ( ) 信誉:100 2002-2-25 12:37:28 得分:0 部署为COM+组件后,不能使用NEW操作符,必须使用:
这是错误的观点
Ex1.Class要加“ ”吧
服务器就是填入组件服务的计算机名就可以了吗
我运行后产生
类未在本地机器上注册(错误 463)指定了一个服务器参数,但是指定的类 progid (CreateObject 函数的第一个参数)未在本地系统上注册。
的错误,
不过我看工程-引用里 EX1定位: C:\programe files\COMPluse application\{AAEO38F9-CFAAD-3244.....
这应该是已经注册了吧
何况我DLL是在服务器上,如果手工注册,那还要MTS干什么
Ex1.Class要加“ ”吧
服务器就是填入组件服务的计算机名就可以了吗
运行后产生
类未在本地机器上注册(错误 463)指定了一个服务器参数,但是指定的类 progid (CreateObject 函数的第一个参数)未在本地系统上注册。
的错误,
不过我看工程-引用里 EX1定位: C:\programe files\COMPluse application\{AAEO38F9-CFAAD-3244.....
这应该是已经注册了吧
何况我DLL是在服务器上,如果手工注册,那还要MTS干什么
active dll工程名dllTestGetTime,未选择remote server files
cTestGetTime.cls
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "cTestGetTime"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = TruePublic Function Gettime() As String
Gettime = CStr(Now)
End Function客户端工程
Sub main()
Dim aaa As cTestGetTime
Set aaa = New cTestGetTime
MsgBox aaa.gettime
Set aaa = Nothing
End Sub安装顺序,
编译dll生成dlltestgettime.dll
->copy to server
->组件服务添加组件dlltestgettime.dll
->启动组件->导出安装包(应用程序代理,非服务应用程序)
->在林一台机器上安装
->建立新的vb工程,引用dlltestgettime,输入测试代码并运行,一切正常。
我的环境是win2000->win2000
老实说,我也是第一次在自己的程序中实现中间件(COM+)的,对其中的很多原因不能提供权威的说明。
我不知道为什么在Windows 2000组件服务中导出的客户端安装程序安装后(可能安装程序并没有注册组件),使用CreateObject会出现463错误,但手工注册(可以在程序中进行)后即可正常。
对于使用NEW操作符,我是没用也没试过(我会试的),但我认为使用CreateObject有其优点:如可在运行时确定中间层服务器及要调用何种组件等。请各位高手多多指点([email protected])
我想做到的就是服务器上生成DLL 在98客户机上调用服务器上的DLL,不要手工注册的,先谢谢各位高手,不管如何,一定给分
你可以把clireg32.exe放到你的客户端程序包里面
,然后做一个批处理文件,在安装的时候自动注册vbr文件就可以实现了
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/pgdeployment_toplevel_65gz.asp