读书人

com+不能返回正确值的有关问题

发布时间: 2012-02-02 23:57:14 作者: rapoo

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是否已经开启

读书人网 >C#

热点推荐