DLL ( 积分: 100 )

  • 主题发起人 主题发起人 hupeh
  • 开始时间 开始时间
H

hupeh

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi写了一个DLL,通过函数变量返回字符串
function _FastReplace(aSource:PChar;aFindString,aReplaceString:PChar;
CaseSensitive:boolean):PChar;stdcall;
var
ret:String;
temp:PChar;
begin
ret := FastReplace(String(aSource),String(aFindString),String(aReplaceString),CaseSensitive);
GetMem(Temp,Length(ret));
StrCopy(temp,PChar(ret));
Result := temp;
end;

在BCB调用
char out[1000];
int iRet=0;
HMODULE m_hModule;
char* (*_FastReplace)(char*_aSource,char*_aFindString,char*_aReplaceString,bool _CaseSensitive);

m_hModule = ::LoadLibrary(LIB_NAME);
if(m_hModule>0)
{
iRet = 1;
(FARPROC&) _FastReplace = ::GetProcAddress(m_hModule,"_FastReplace");
strcpy(out,_FastReplace(aSource,aFindString,aReplaceString,CaseSensitive));
FreeLibrary(m_hModule);
}
return iRet;

结果:
out的内容是正确的,但是iRet明明等于1,但是返回的时候这个值改动了,请问是什么问题。是DLL的问题吗?
 

Similar threads

I
回复
0
查看
903
import
I
I
回复
0
查看
817
import
I
I
回复
0
查看
724
import
I
I
回复
0
查看
706
import
I
后退
顶部