首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将字符串从C#传递给delphi dll函数?

如何将字符串从C#传递给delphi dll函数?
EN

Stack Overflow用户
提问于 2012-08-06 16:20:10
回答 1查看 3.8K关注 0票数 2

所以我想用Delphi语言制作的.dll文件的函数。

这是delphi的代码,

代码语言:javascript
复制
procedure Login(login,password:PChar); stdcall;
   var
    LoginPacket:tLoginPacket;
    s:IP_bigstr;
    q,w:integer;
    pb:PByte;
   begin
    LogMessage('Login: '+login+' pwd: '+password);
    fillchar(loginpacket,sizeof(loginpacket),0);
    LoginPacket.code:=10;
    LoginPacket.lr.version:=100;
    LoginPacket.lr.protocol:=ProtocolVersion;
    LoginPacket.lr.login:=login;
    LoginPacket.lr.gameversion:=version;
    s:=password;
    EncryptPwd(s,@loginPacket.lr.pwd);
    Loginpacket.lr.pwdhash:=PasswordHash(password);
    LoginPacket.lr.gameID:=0;
    LoginPacket.lr.regname:='noname';
    LoginPacket.lr.cdkey:=0;
    LoginPacket.lr.cshash:=0;
    loginpacket.lr.sversion:='';
    pb:=@loginpacket; inc(pb);
    for q:=1 to sizeof(tloginpacket)-1 do begin
      pb^:=pb^ xor ((q+10)*(q+10) div 5);
      inc(pb);
    end;
    SendData(@loginpacket,sizeof(loginpacket));
    SimpleRequest(21,1,0);
    SimpleRequest(20,0,0);    
   end;

这是我的C#(unity3d)尝试,

代码语言:javascript
复制
[DllImport ("ServerTool")]
private static extern void Login([MarshalAs(UnmanagedType.LPStr)]string id, [MarshalAs(UnmanagedType.LPStr)]string pass);

private static extern void Login(string id, string pass);

...
if(stage ==1){
Login("Test", "qwerty");
stage = 2;
}

以上两种定义登录方法都失败了,

当运行这个部分(if(stage==1)...Login)时,unity崩溃并关闭。

因此,我认为C#的这种登录用法在与delphi dll通信时存在一些问题。

请帮帮忙。

提前感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-06 16:25:08

也不要忘记C#中的调用约定:

代码语言:javascript
复制
[DllImport ("ServerTool.dll"), CallingConvention=CallingConvention.StdCall)]

您可能还需要根据所使用的Delphi版本来指定CharSet。

请参阅http://msdn.microsoft.com/en-us/library/7b93s42f.aspxhttp://msdn.microsoft.com/en-us/library/system.runtime.interopservices.callingconvention.aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11824738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档