delphi将pchar类型的变量传递给vc编写的dll问题,但是返回来的始终是一样的 100

这是vc的代码:extern"C"_declspec(dllexport)char*login(char*name,char*password){if(strcmp(na... 这是vc的代码:
extern "C" _declspec(dllexport) char* login(char* name,char* password)
{
if(strcmp(name,"1"))
return name;//把传入的参数直接传回去看看变没变
else
return "no";
}
delphi中是这样写的:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
isright:pchar;
begin
isright:=login(PChar(name.Text),PChar(password.Text));
Form1.Caption:=string(isright);
end;

声明dll中的函数:
unit Ulogin;
interface
function login(name,password:pchar):pchar;cdecl;
implementation
function login;external 'login.dll' name 'login';
end.
我已经解决了,是delphi2010的问题.在2010中,pchar是unicode字符的
展开
 我来答
澄闻网
2010-10-18 · TA获得超过2789个赞
知道大有可为答主
回答量:4683
采纳率:0%
帮助的人:3136万
展开全部
想起来了,你这个问题是C写得有问题。
人如果返回变量x,应该在函数内为x分配内存空间。
char * xcalc(char* a, char*b)
{
char* x;
x = (char*)mallac(255);
strcat(x, "Test ok");
return x;
}
你看看这样返回对不对呢。
TDecryptString = function(S: PChar; p: PChar): PChar;stdcall;
这个是我以前写的,也是加密字符串的,c源程序找不到了,只找到delphi的代码
tmp := StrPas(PEncryptString(pchar(tmp2), pchar(theKey)));
不懂空手道
2010-10-18 · TA获得超过103个赞
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:103万
展开全部
我以前也遇到过类似的问题,delphi和VC之间的调用总有一些令人头疼的问题,返回的值不正确,改dll中的函数声明为如下试试:
function login(name,password:pchar):pchar;stdcall;external 'login.dll' ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
57212661
2010-10-18
知道答主
回答量:22
采纳率:0%
帮助的人:0
展开全部
安大叔大叔大叔
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
苦守无奈
2010-10-21 · TA获得超过608个赞
知道小有建树答主
回答量:725
采纳率:41%
帮助的人:138万
展开全部
pchar字符型,而name.text是字符串,把字符串转成pchar型,那它就只取了name.text的第一个字符,pchar是字符型嘛,在login中,你声明一个pchar型的数组,ary,传值的时候把传进来的参数,如
ary :=copy(name.text,0,length(name.text)),这样试试,看行不行,我也只是种假设
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式