c2gxor这个dll在vb中调用情况如下
Dim c2gxor As New C2GXORLib.XOR
txtEncryptedText.Text = c2gxor.EncryptStringHex(txtString, txtPassword)
很正常。可我在delphi中调用出现问题。我的代码如下
TEncryptString = function(pwd: pchar; pws1: pchar): pchar; stdcall;procedure TForm1.Button1Click(Sender: TObject);
var
    hfunc: HMODULE;
    EncryptString: TEncryptString;
begin
    hfunc := LoadLibrary('C2GXOR.dll');
    @EncryptString := GetProcAddress(hfunc, 'EncryptStringHex');
    Edit1.Text := EncryptString(Pchar('aaa'), Pchar('BDK%MN'));
end;
end现在执行到这句时@EncryptString := GetProcAddress(hfunc, 'EncryptStringHex');得到的时nil。所以下面的就不用谈了。
请大家帮忙看看问题在什么地方。重谢!

解决方案 »

  1.   

    @EncryptString 为nil,可能是
    hfunc=0或 'EncryptStringHex'名不对
      

  2.   

    昨天刚看了一个差不多的问题、不知道对你是否有用
    http://expert.csdn.net/Expert/topic/2597/2597861.xml?temp=.5047418
      

  3.   

    .......................
      var
      DllDecrypt: TdoDecrypt;
      LibHandle: THandle;
    begin
      LibHandle := loadlibrary('Encrypt.dll');
      if LibHandle = 0 then
        raise EDLLLoadError.Create('Unable to Load Dll');
      @DllEncrypt := GetProcAddress(LibHandle,'doEncrypt');
      if not (@DllEncrypt = nil) then
        result := DllEncrypt(pchar(src))
      else
        RaiseLastWin32Error;
    ...................
    end;这样试一下,看行不行?
      

  4.   

    TdoDecrypt = function (str: pchar): pchar; StdCall;
    补充