sFilename:string;sDirectory:string改为pchar

解决方案 »

  1.   

    String 改为 WideString
    Boolean 改为 DWord
      

  2.   

    你声明错了,象我这样做,OK?你要用Delphi 2.0以上的版本原型改成
    function  unpackfunction (Filename:PChar;Directory:PChar):int;stdcall;
    var
     sFileName, sDirectory: string;
    begin
     sFileName := string(FileName);
     sDirectory := string(Directory);
    ....
    end;
    这样在VC和VB中就不会有问题了!!
      

  3.   

    不好意思,大家有点误会了!
    我这个DLL是别人写好了给我的,函数接口也告诉了我.
    只是我现在发现在DEHPI中可以如我所说的方式调用此函数,却无法在VB中调用,请问我应该如何在VB或VC中调用此函数?谢谢!!!
    此DLL原型函数已经无法修改了,因为写此函数的人已经找不到了.
      

  4.   

    你是用的Delphi 是什么版本的?这个很重要!!
      

  5.   

    我用DEPHI5调用此函数,没有问题.
    我用VB6无法调用此函数,死机.
      

  6.   

    有一个方法:就是再用DELPHI包装一次。
    function  fun (Filename:PChar;Directory:PChar):int;stdcall;
    var
    sFileName, sDirectory: string;
    begin
    sFileName := string(FileName);
    sDirectory := string(Directory);
    unpackfunction()
    Result := ;
    end;
      

  7.   

    啊,老兄,有没别的办法啊,用DEPHI再包装,累死我了!
    再说,我也不懂DEPHI.我现在怀疑此DLL是用DEPHI写的,可惜我已经无法修改原型函数了,有办法解决么?
    我想主要是参数类型的问题,有没对应关系,我可以使用其他类型么?请诸位高手继续指点,谢谢!!! 
      

  8.   

    VC调用delphi写的dll,
    在声明函数时要注明__stdcall
      

  9.   

    楼上兄弟说的有误:因为这个DLL是用Delphi写的,所以,VC不能调用,类型不匹配!!
    我给你一个例子吧:
      

  10.   

    function  unpackfunction (sFilename:string;sDirectory:pchar):boolean;far;external 'mylib.dll'
    在VB中这样声明,死机!!!
    Private Declare Function unpackfunction Lib "'mylib.dll" (byval sFilename As String, sDirectory As String) As Boolean
    string 改为Pchar
    VB声明时按值传送byval