DLL基础请教?
我有个单元,里面有一些函数,直接调试这些函数都没有问题,但是直接将这个单元编译成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时候有那些需要注意的问题? 谢谢
[解决办法]
首先看你写的DLL输出函数有没有你想输出的函数啦
例如DLL中
exports
ReverseStr;
接着你看你的ReverseStr函数中有无传值过来 如传值的话再看
你的程序有无调用
function ReverseStr;external '是你DLL的名字 ' ;
按步骤来 一切搞定 ~~~
[解决办法]
function ReverseStr(Value: string): string;
参数不要用String类型,要用PChar,做成DLL最好声明时加stdcall指示字。
[解决办法]
stdcallRight-to-left
自右向左 DLL调用的时候可以考虑写成回调函数
TReverseStr = function (Value: PChar)): PChar;stdcall;
然后在你的调用的地方声明一个
var
ReverseStr: TReverseStr;
这样就可以直接调用ReverseStr了~~