首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

DELPHI 调用C++的dll里的LPCSTR&参数有关问题

2012-03-11 
DELPHI 调用C++的dll里的LPCSTR&参数问题CSDN的朋友们好,我遇到一个很着急的问题,希望你们能帮忙解决一下

DELPHI 调用C++的dll里的LPCSTR&参数问题
CSDN的朋友们好,我遇到一个很着急的问题,希望你们能帮忙解决一下
我在VC++   6.0   里声明的DLL函数如下
extern   "C "   _declspec(dllexport)     int   _stdcall   setValue(LPCSTR&     strtitle,LPCSTR&     strname,LPCSTR&     strvalue)   ;
在VB   6.0里能够成功调用
导入格式如下:
Public   Declare   Function   setValue   Lib   "setValue.dll "   (ByRef   strTitle   As   String,   ByRef   strName   As   String,   ByRef   strValue   As   String)   As   Integer
但在DELPHI   里用PChar实验了N次也没有成功
希望有人能帮忙解决一下
  谢谢了。。。。在线等。。。




[解决办法]
function setValue(var strtitle, strname, strvalue: PChar): Integer;
[解决办法]
stdcall;
[解决办法]
前面有var加了没?
[解决办法]
把var 去掉试试
[解决办法]
int _stdcall setValue(LPCSTR & strtitle,LPCSTR & strname,LPCSTR & strvalue) ;

function setValue(var strtitle: PChar ;var strname: PChar ;var strvalue: PChar): Integer;

试试。
[解决办法]
会不会是你的参数本身有问题?
[解决办法]
把你的调用代码贴上来
[解决办法]
注意,在vb和vc++下定义的string相当于delphi的widestring,而不是pchar
[解决办法]
这样试试:

procedure TForm1.BitBtn1Click(Sender: TObject);
var
resulta:integer;
strtitle:PChar;
strname:PChar;
strvalue:PChar;
begin
strtitle := StrAlloc(256);
strname := StrAlloc(256);
strvalue := StrAlloc(256);
StrCopy(strtitle, '个人客户信息 ');
StrCopy(strname, 'NAME ');
StrCopy(strvalue, 'sadf ');
try
resulta:=setValue(strtitle,strname,strvalue);
finally
StrDispose(strtitle);
StrDispose(strvalue);
StrDispose(strvalue);
end;
end;
[解决办法]
type PPChar = ^PChar;

再不行就没办法了。
[解决办法]
function setValue(strtitle, strname, strvalue: PPChar): Integer;
[解决办法]
你把setValue.dll和原码压缩成文件发到我的邮箱:huiwww@163.com,我帮你看看先
[解决办法]
没仔细看,你还可以定义成PAnsiChar;
[解决办法]
简直匪夷所思
LPCSTR = PAnsiChar;
PChar = PAnsiChar;

[解决办法]
extern "C " _declspec(dllexport) int _stdcall setValue(LPCSTR& strtitle,LPCSTR& strname,LPCSTR& strvalue) ;
这样的东西delphi是无法调用的.
因为这种LPCSTR&东西除了C++ 没其他语言支持.
让VC的人再给你重做一份吧.用char**
[解决办法]
几个字符串是用来存放返回值的, 但你根本没有分配空间!
应该像下面的:

procedure TForm1.BitBtn1Click(Sender: TObject);


var
resulta:integer;
strtitle: array[0..255] of char;
strname: array[0..256] of char;
strvalue: array[0..256] of char;
begin
resulta:=setValue(@strtitle,@strname,@strvalue);
end;

[解决办法]
Windows.pas
LPCSTR = PAnsiChar;
system.pas
PPChar = ^PChar;
PPAnsiChar = PPChar;

用PPChar看看。

热点排行