Delphi调用VC动态库的Char指针返回有关问题
2014-07-29 22:09
429 查看
Delphi调用VC动态库的Char指针返回问题
VC动态库的Dll接口函数:
char* Exec(int iLength, char* cXMLStr);
Delphi调用申明:
Exec:function(iLength: integer; cXMLStr: pchar): pchar;stdcall;
具体调用
var
sDllStr: string;
iDllLen: Integer;
pString: PChar;
begin
//执行execHis接口
if Assigned(@execHis) then
begin
//
sDllStr := '这是个测试程序';
iDllLen := Length(sDllStr);
pString := execHis(iDllLen, PChar(sDllStr));
end;
end;
接口调用返回了pString看不懂的字符串,应该返回的是汉字字符串,这个该怎么转换才能得到正确的字符串?
------解决方案--------------------
Delphi(Pascal) code
VC动态库的Dll接口函数:
char* Exec(int iLength, char* cXMLStr);
Delphi调用申明:
Exec:function(iLength: integer; cXMLStr: pchar): pchar;stdcall;
具体调用
var
sDllStr: string;
iDllLen: Integer;
pString: PChar;
begin
//执行execHis接口
if Assigned(@execHis) then
begin
//
sDllStr := '这是个测试程序';
iDllLen := Length(sDllStr);
pString := execHis(iDllLen, PChar(sDllStr));
end;
end;
接口调用返回了pString看不懂的字符串,应该返回的是汉字字符串,这个该怎么转换才能得到正确的字符串?
------解决方案--------------------
Delphi(Pascal) code
var pUserInfo:array[0..96]of char; sName:string; ZeroMemory(@pUserInfo,97); SetLength(sName,15); for i:=0 to 14 do sName[i+1]:=pUserInfo[i]; ------解决方案-------------------- delphi7是行的,后面delphi2010,char型都是2个字节,你写 Delphi调用申明: Exec:function(iLength: integer; cXMLStr: pansichar): pansichar;stdcall;就不管哪个版本都可以 ------解决方案-------------------- 你的VC的DLL是什么库?如果是VC自己专用的,比如msvcrXXX什么的那个,你声名的时候需要用cdecl惯例,而不是stdcall惯例,你的函数声明的写法应该是正确的,当然前提是你用的是D2009以下的版本
相关文章推荐
- 关于delphi调用vc编写的dll中参数类型有关问题
- 请问Delphi调用VC写的dll,有传入和传出参数都是unsigned char*运行中有有关问题
- C++动态库返回char*C#调用失败问题
- js通过window.external调用delphi的返回值类型问题解决方案,不解的COM问题
- 有关python调用dll的问题,指针传递的问题
- Java 通过 JNA 调用 DLL 返回 char * 字符串乱码问题的解决
- delphi调用vc编写的DLL应注意的问题
- c#调用API(GetModuleFileName)获取程序路径返回乱码有关问题
- 【经典面试题】有关指针、内存空间如何申请调用的问题
- SQLQuery 查询Oracle char类型返回一个字符有关问题
- VC2008下多线程环境中AfxGetMainWnd()返回空指针问题及解决方法
- [vc]CString 及char 指针的常见问题
- VB调用VC++的DLL问题:1.无法返回参数,2.找不到入口点
- VC++ CString 及char 指针的常见问题(转)
- C# 调用C/C++ Dll(参数含char*指针,返回char*指针)
- VC调用Delphi的DLL时遇到的问题及解决
- VC调用Delphi的DLL时遇到的问题及解决
- python调用C动态库导出函数的返回值为指针类型时,在64位python环境下被截断解决方法
- VC++之对象含指针成员指向堆空间并调用复制构造函数问题—参考范磊VC++
- VC8下多线程环境中AfxGetMainWnd()返回空指针问题及解决方法