const domain_len=45
const mailbox_len=30
const fullname_len=30
const maildir_len=90
.........
//其他的类似,你自己写吧!
type MD_UserInfo=record
         Email:array[0..email_len+1] of char;
         Mailbox:array[0..MAILBOX_LEN+1] of char;
         Domain:array[0..DOMAIN_LEN+1] of char;
         FullName:array [0..FULLNAME_LEN+1] of char;
         MailDir:array [0..MAILDIR_LEN+1] of char;
         Password:array [0..PASSWORD_LEN+1] of char;
         AutoDecode:boolean;
         IsForwarding:boolean;
         AllowAccess:boolean;
         AllowChangeViaEmail:boolean;
         KeepForwardedMail:boolean;
         HideFromEveryone:boolean;
         EncryptMail:boolean;
         ApplyQuotas:boolean;
         EnableMultiPOP:boolean;
         LocalOnly:boolean;
         MaxMessageCount:longint;
         MaxDiskSpace:longint;
         WebConfig:integer;
         FwdAddress:array [0..FWDADDR_LEN+1] of char;
         FwdHost:array [0..FWDHOST_LEN+1] of char;
         FwdSendAs:array [0..FWDSENDAS_LEN+1] of char;
         FwdPort:array [0..FWDPORT_LEN+1] of char;
         NTAccount:array [0..MAILBOX_LEN+1] of char;
         MailFormat:array [0..MBXFORMAT_LEN+1] of char;
         AutoRespScript:array [0..MAX_PATH+1] of char;
         AutoRespProcess:array [0..MAX_PATH+1] of char;
         AutoRespExclude:array [0..AUTORESPEXCLUDE_LEN+1] of char;
         AddToList:array [0..EMAIL_LEN+1] of char;
         RemoveFromList:array [0..EMAIL_LEN+1] of char;
         PassMessageToProcess:boolean;
         MaxUIDLCount:longint;
         MaxMessageSize:longint;
         UserDefined:array [0..USERDEFINED_LEN+1] of char;
    end;function MD_AddUser(var userinfo:MD_UserInfo;flags:integer):integer;stdcall;external 'Your Dll filename';
//哎,写的太辛苦了!

解决方案 »

  1.   

    为什么还是不行啊?在VC里调用正常,在DELPHI中一调就非法操作。为什么?
      

  2.   

    function MD_AddUser(var userinfo:MD_UserInfo;flags:integer):integer;cdecl;external 'Your Dll filename';
    试试
      

  3.   

    出现错误是因为我不知道你那儿的调用约定,你试一下几个调用约定即可,知道成功为止:
    register  pascal  cdecl stdcall safecall
      

  4.   

    我在Delphi里还有几个其它的函数,如下:function MD_InitUserInfo(UserInfo:MD_UserInfo):boolean;stdcall;External 'C:\MDaemon\App\MDUser.dll';
    function MD_AddUser(UserInfo:MD_UserInfo;Flags:Integer):integer;stdcall;External 'C:\MDaemon\App\MDUser.dll';
    function MD_UserCount:integer;stdcall;external 'C:\MDaemon\App\MDUser.dll';
    function MD_DeleteUser(EMail:PChar;Flag:Integer):boolean;stdcall;external 'C:\MDaemon\App\MDUser.dll';它们使用的都是stdcall调用方式,除了MD_InitUserInfo和MD_AddUser会出现非法操作以外以它的都是正常的,所以怀疑是MD_UserInfo定义有问题,是吗?
      

  5.   

    Adduser在VC里的声明是:typedef int (_stdcall *MD_AddUserP)(MD_UserInfo*, int);
    extern MD_AddUserP MD_AddUser;
      

  6.   

    啊,我也不知道,我没有你那个Dll文件,所以没有办法测试。如果就翻译来说,好像没有什么错误啊!
      

  7.   

    Kingron:
    我把DLL和.h文件发给你帮我试试好吗?