DLL基础请教?

risman 2007-01-15 11:40:48
我有个单元,里面有一些函数,直接调试这些函数都没有问题,但是直接将这个单元编译成DLL,一些函数就不能执行.
例如 函数
function ReverseStr(Value: string): string;
var
s: string;
i: Integer;
begin
s := '';
for i := 1 to Length(Value) do
begin
Insert(Value[i],s,i);
end;
Result := s;
end;
就不能编译成DLL执行.请问在编写DLL时候,一些数据类型是不是要转换?在编译DLL时候有那些需要注意的问题? 谢谢
...全文
186 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
madyak 2007-01-15
  • 打赏
  • 举报
回复
function ReverseStr(Value: PChar): PChar;stdcall;
madyak 2007-01-15
  • 打赏
  • 举报
回复
function ReverseStr(Value: string): string;
参数不要用String类型,要用PChar,做成DLL最好声明时加stdcall指示字。
risman 2007-01-15
  • 打赏
  • 举报
回复
报错 access violation 0x003119 write of address 0x10c0000 ,我也不知道什么原因,里面函数不止一个,很多.
keyz 2007-01-15
  • 打赏
  • 举报
回复
试了,可以编译啊。 报什么错?
risman 2007-01-15
  • 打赏
  • 举报
回复
我想我的问题不再你说的上面.我也搞不明白所有函数在单元中调试都是可以的,但是编译成DLL就会有很多不能用,也有可以使用的(很少).
risman 2007-01-15
  • 打赏
  • 举报
回复
不行,我在DLL中调试的时候 到for i := 1 to Length(Value) do 就跳出 报错.
zuoansuifeng 2007-01-15
  • 打赏
  • 举报
回复
首先看你写的DLL输出函数有没有你想输出的函数啦


例如DLL中

exports
ReverseStr;

接着你看你的ReverseStr函数中有无传值过来 如传值的话再看

你的程序有无调用

function ReverseStr;external '是你DLL的名字' ;

按步骤来 一切搞定 ~~~


zuoansuifeng 2007-01-15
  • 打赏
  • 举报
回复
哇 100分的帖子 不接白不接~~
taxpayer 2007-01-15
  • 打赏
  • 举报
回复
mark
jerry8 2007-01-15
  • 打赏
  • 举报
回复
是不是调试的时候没有给值


要不,就是有些单元没有引用
zuoansuifeng 2007-01-15
  • 打赏
  • 举报
回复
stdcall Right-to-left

自右向左 DLL调用的时候可以考虑写成回调函数

TReverseStr = function (Value: PChar)): PChar;stdcall;

然后在你的调用的地方声明一个

var
ReverseStr: TReverseStr;

这样就可以直接调用ReverseStr了~~

xhj12077021 2007-01-15
  • 打赏
  • 举报
回复
我现在也在学习DLL

初次接触

顶一个

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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