200大分求助!!!为啥我调用我的dll格式的DCOM服务器中的函数时老是出错???(200分)

  • 主题发起人 主题发起人 飞骐
  • 开始时间 开始时间

飞骐

Unregistered / Unconfirmed
GUEST, unregistred user!
为啥我调用我的dll格式的DCOM服务器中的函数时老是出错???而调用exe格式的DCOM
服务器中的函数又没事??
 
错误是什么?在什么环境下调用:主线程还是你自己创建的线程?
另:函数的参数是什么?String?那引用 Sharemem 单元了吗?
 
重点看看初始化的部分,exe格式是进程外的调用,自己加载时会不会执行了一些初始化工作?
 
该函数主要是进行字符串处理的.错误是:'必须加载一个dll'
看到Sharemem单元,我有所领悟,但仍不太清楚,请LLLYJ说说为啥要加上sharemem单元??
 
dll注册了吗?
 
当然注册了.
LLLYJ:我已经把ShareMem单元加入了uses行列(服务器和客户端),而且是第一个,编译时
不会出错,注册或反注册时严重错误(BorlandMM.dll).
 
>>我已经把ShareMem单元加入了uses行列(服务器和客户端),而且是第一个
在客户断并不需要加入,只在DLL中,且函数的参数有string类型时才需要。
》》为啥要加上sharemem单元??
这涉及到Borland的内存管理机制,说来太多,就不多说,建议你看看Delphi的帮助。
(使用Memory management来搜索)
 
按帮助上说的,要把BORLANDMM.DLL与我的工程一起打包,可哪里有BORLANDMM.DLL????
为啥我的机器上没有这个文件?我要到哪去找它???
 
你可以到$(DELPHI)/bin下或$(WINDOWS)/下查找
一般就在$(DELPHI)/bin下
 
我知道了,是Delphi的帮助出错了,应该是borlndmm.dll.
我已经在所有的program和library中加入了sharemm单元,可是'必须加载一个dll'的错误
仍然出现????
 
错误原因决不是ShareMem/Borlndmm.dll的问题,因为COM+控件的Dll只会固定输出下面
四个函数:
function DllGetClassObject(const CLSID, IID: TGUID;
var Obj): HResult;
stdcall;
function DllCanUnloadNow: HResult;
stdcall;
function DllRegisterServer: HResult;
stdcall;
function DllUnregisterServer: HResult;
stdcall;
它们都没有字符串参数,或是返回字符串值
但我还是要感谢LLLYJ,他的发言也让我学到了不少东西.和教训.....
因为错误原因我找到了,是因为自己用错了变量!!可为什么我的exe服务器又没事,
我可是拷贝过去的啊??
 
多人接受答案了。
 
后退
顶部