一个关于Dll调用的问题,急~~~~

whchh 2001-09-23 11:13:10
我的程序需要调用外部的一个Dll文件,叫Dblib.dll,其中一个函数名叫RollBackTrans.
我采用的是静态调用方式:
function RollBackTrans():integer;stdcall;
far;external 'DBLib.Dll' name 'RollBackTrans';


implementation

但应用程序根本无法启动,出错信息:


"链接文件LOG.EXT,到不存在的输出DBLIB.DLL:RollBackTrans."

"Unable to create process:与系统连接的设备不能正常运转。"

不知是怎么回事?
...全文
844 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
whchh 2001-09-28
  • 打赏
  • 举报
回复
To gong_yue(gong_yue):在哪能找到(用w32dsam.exe)?
To gcq(gcq):两者有什么区别么?
gcq 2001-09-27
  • 打赏
  • 举报
回复
pchar不行???
用ch:^char看看
ldghj1 2001-09-26
  • 打赏
  • 举报
回复
nimda病毒好像是中国人写的,我今天中招,IIS5.0真是剧烂。我发现改病毒会在windows目录下流下mmc.exe,图标是IE的,解析这段代码,发现有如下字符串Concept Virus(CV) V.5, Copyright(C)2001 R.P.China MIME-Version: 1.0

不过R.P.China好像错啦国名是P.R.China,估计是台湾或者香港人写的.

这个mmc.exe仿冒windows的mmc.exe 执行后会开一百个线程扫其它机器
gong_yue 2001-09-25
  • 打赏
  • 举报
回复
用相应的软件查看一下dll中的函数(用w32dsam.exe)是否童声名的一样
city_tiger 2001-09-25
  • 打赏
  • 举报
回复



欢迎看英文原版C/C++书籍:
http://bros4.top263.net


leemingsong 2001-09-23
  • 打赏
  • 举报
回复
1.DLL Run parameter调试实现
Dblib.dpr 工程菜单 RUN|Parameter...|Host Application设置成Log.exe(路径全称)
这样Dblib就可以“运行”。
2.TDUMP 是一个Delphi提供的命令行工具,在DOS环境及相应的路径下打命令
(注意$Delphi\Bin要在当前环境的PATH中,可参考PATH,TDUMP帮助)
TDUMP Dblib.DLL > ViewDLL.TXT
3.DLL用什么语言写的无所谓,只要遵循当前调用的语法规则就行了。
whchh 2001-09-23
  • 打赏
  • 举报
回复
另外,Dll是用C写的~~~~
whchh 2001-09-23
  • 打赏
  • 举报
回复
“DLL Run parameter方法调试”怎么调试?
命令方法
TDUMP Dblib.DLL > ViewDLL.TXT 怎么实现?能不能说的具体一点~~~~
leemingsong 2001-09-23
  • 打赏
  • 举报
回复
1.可用$DELPHI/BIN/TDUMP.EXE 命令行工具看看函数有没有导出?命令方法
TDUMP Dblib.DLL > ViewDLL.TXT //将Dblib.dll导入到ViewDLL.txt文本文件
在其中查找 RollBackTrans是否已经在Exports部分出现。
2.if (1) then
查看Dblib.dll的工程文件Dblib.dpr的Options, Output Directory设置千万别写相对路径
不过你已经把DLL拷贝到主程序目录,该问题不存在,但建议采用DLL加参数Run parameter
方法调试DLL,该说明是必要的
else
肯定DLL没有导出函数RollBackTrans,查看Dblib.dpr Source文件是否有
Exports
RollBackTrans;
3.静态调用没有必要采用far机制
4.如果pb调用没问题,肯定是你的Log.exe有问题,建议:
a.试着用DLL Run parameter方法调试,看看能不能设置断点,跟踪
b.还是工程的Option|Directory 的问题
c.没办法就Build 一下所有工程。可能是编译器隐藏的bug
Kingron 2001-09-23
  • 打赏
  • 举报
回复
不是 ,是你的函数名字不对,或者你的DLL中没有这个函数。检查你的函数的名字!
whchh 2001-09-23
  • 打赏
  • 举报
回复
我就把Dll放到工程的根目录之下了~
zzutlink 2001-09-23
  • 打赏
  • 举报
回复
路径对不对?
whchh 2001-09-23
  • 打赏
  • 举报
回复
应该是全的,因为用pb调用,没有问题~
我的工程名字叫Log.exe
Jneu 2001-09-23
  • 打赏
  • 举报
回复
你的Dll是否不全!
chechy 2001-09-23
  • 打赏
  • 举报
回复
是不是RollBackTrans函数需要有个LOG.TXT文件。另外,函数声明不要far。
function RollBackTrans():integer;stdcall; external 'DBLib.Dll' name 'RollBackTrans';
whchh 2001-09-23
  • 打赏
  • 举报
回复
UP?
whchh 2001-09-23
  • 打赏
  • 举报
回复
UPDATE
whchh 2001-09-23
  • 打赏
  • 举报
回复
FormularyEntry(char* InHosNo,char* BillNo,char*ErrorMsg) :

我在DELPHI中调用Dll中的该函数,应该怎么声明?

char* InHosNo,char* BillNo:是输入的

char*ErrorMsg:是输出的



我在DELPHI里用PCHAR可以么?
BlueTrees 2001-09-23
  • 打赏
  • 举报
回复
参数的数据类型你弄懂了吗?很多情况下,看上去传递的是一块数据,实际上是传递的一个指针
whchh 2001-09-23
  • 打赏
  • 举报
回复
UP
加载更多回复(7)

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧