我试图将C++中的qsort, bsearch函数做成dll供delphi调用,如下:------------------------VC, DLL--------------------------///////////////////////////////////////////////////////////////////////////////
//功能: 快速排序(对qsort函数的封装), 详情请参见MSDN文档.
///////////////////////////////////////////////////////////////////////////////
extern "C" void _stdcall EXPORT QuickSort(void *base, size_t num, size_t width,
  int (__cdecl *compare )(const void *elem1, const void *elem2 ))
{
qsort(base, num, width, compare);
}///////////////////////////////////////////////////////////////////////////////
//功能: 快速查找(对bsearch函数的封装), 详情请参见MSDN文档.
///////////////////////////////////////////////////////////////////////////////
extern "C" void * _stdcall EXPORT BinarySearch(const void *key, const void *base, size_t num, size_t width,
   int ( __cdecl *compare ) ( const void *elem1, const void *elem2 ))
{
return bsearch(key, base, num, width, compare);
}---------------------------------------------------------------------------------DELPHI---------------------------type
    PSortWordParam = ^TSortWordParam;
    TSortWordParam = record
pArrayBase: Pointer;
ArrayLen: integer;
ElementLen: integer;
pCompareFunc: PCompareFunc;
Done: boolean;
end;type TEnglishWord = array[0..49]  of char;type TCompareFunc = Function (const pElement1, pElement2: Pointer) : Integer;
type PCompareFunc = ^TCompareFunc;procedure  QuickSort(ArrayBase: Pointer; ArrayLen: integer; ElementLen: integer; pCompareFunc: PCompareFunc); stdcall;
procedure  QuickSort; external 'VcComFunc.dll' name 'QuickSort';function StrCompFunc(const pElement1, pElement2: Pointer):integer;....
function SortWordFunc(p: Pointer):LongInt;stdcall;
var
    pParam: PSortWordParam;
begin
pParam:= PSortWordParam(p);
QuickSort(pParam.pArrayBase, pParam.ArrayLen, pParam.ElementLen, PCompareFunc(pParam.pCompareFunc));
pParam.Done:= true;
end;function StrCompFunc(const pElement1, pElement2: Pointer):integer;
begin
result:= StrComp(pElement1, pElement2);
end;procedure TMainForm.SortBtnClick(Sender: TObject);
var
   hThread:THandle;
   ThreadID:DWORD;
WordList: array of TEnglishWord;
Param: TSortWordParam;
...
begin    SetLength(WordList, 1000);

...

   Param.pArrayBase:= Pointer(@WordList);
   Param.ArrayLen:= WordNums;
   Param.ElementLen:= SizeOf(TEnglishWord);
   Param.CompareFunc:= @StrCompFunc;
  
    Param.Done:= false;
    
    hthread:=CreateThread(nil, 0, @SortWordFunc, @Param, 0, ThreadID);    SetLength(WordList, 0);
end;
当然,运行出错了,又不好调试,请各位看看,哪里出错了?
运行到QuickSort(pParam.pArrayBase, pParam.ArrayLen, pParam.ElementLen, PCompareFunc(pParam.pCompareFunc));
这一句时好像还对,但接着就错了!