com+不能返回正确值的问题?
首先声明的是因Delphi版的人实在是太少了,所以将贴子发在c#版讨论,这个没有语言上的差异,进入正题:
用Delphi写了一个COM+的类库,注册在Windows2003上,函数的返回值不正确,在本机(WindowsXP SP2)上测试,可以返回正确的值.COM+类库如下:
unit Uint_ComServer;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
ActiveX, Mtsobj, Mtx, ComObj, ComServer_TLB, StdVcl;
type
TDComServer = class(TMtsAutoObject, IDComServer)
protected
function GetInteger: SYSINT; safecall;
function GetString: WideString; safecall;
end;
implementation
uses ComServ;
function TDComServer.GetInteger: SYSINT;
begin
Result := 1234;
end;
function TDComServer.GetString: WideString;
begin
Result := 'Return String. ';
end;
initialization
TAutoObjectFactory.Create(ComServer, TDComServer, Class_DComServer,
ciMultiInstance, tmApartment);
end.
在本机测试都可以返回正确的值,用服务器测试,GetInteger返回的是0,GetString返回的是空字符串.是什么原因呢?
------解决方案--------------------沙发,帮忙顶
------解决方案--------------------没学过Deplphi的语法..帮顶
本机测试正常,你拿到别的机上测试保证系统和SP都一样话,还是会出问题的话就应该是调用的方法的问题
------解决方案--------------------返回类型不用string,用byte[]。
44,我在c#调用c++时都是这样。
------解决方案--------------------权限问题
------解决方案--------------------服务里面的COM+ System Application和COM+ Event System是否已经开启