我有个单元,里面有一些函数,直接调试这些函数都没有问题,但是直接将这个单元编译成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时候有那些需要注意的问题? 谢谢

解决方案 »

  1.   

    首先看你写的DLL输出函数有没有你想输出的函数啦 
    例如DLL中exports
      ReverseStr;接着你看你的ReverseStr函数中有无传值过来 如传值的话再看你的程序有无调用function ReverseStr;external '是你DLL的名字' ;按步骤来 一切搞定 ~~~
      

  2.   

    不行,我在DLL中调试的时候 到for i := 1 to Length(Value) do 就跳出 报错.
      

  3.   

    我想我的问题不再你说的上面.我也搞不明白所有函数在单元中调试都是可以的,但是编译成DLL就会有很多不能用,也有可以使用的(很少).
      

  4.   

    报错 access violation 0x003119 write of address 0x10c0000 ,我也不知道什么原因,里面函数不止一个,很多.
      

  5.   

    function ReverseStr(Value: string): string;
    参数不要用String类型,要用PChar,做成DLL最好声明时加stdcall指示字。
      

  6.   

    function ReverseStr(Value: PChar): PChar;stdcall;
      

  7.   

    我现在也在学习DLL初次接触顶一个
      

  8.   

    stdcall Right-to-left 自右向左 DLL调用的时候可以考虑写成回调函数TReverseStr = function (Value: PChar)): PChar;stdcall;然后在你的调用的地方声明一个var
    ReverseStr: TReverseStr;这样就可以直接调用ReverseStr了~~