C语言的接口: HLSSplit.dll 中的接口函数SHLSegWord* HLGetWordAt(HANDLE hHandle, int iIndex);struct SHLSegWord
{
char *s_szWord; //字符串
DWORD s_dwPOS;  //词性标志
float   s_fWeight ;//关键词权重,如果不是关键词,权重为0

SHLSegWord()
{
Reset();
};
void Reset()
{
s_szWord = NULL ;
s_dwPOS = 0 ;
s_fWeight = 0;
};
};
我在DELPHI定义:
SHLSegWord =  Record
     s_szWord:string; //字符串
     s_dwPOS:integer;  //词性标志
     s_fWeight:real;//关键词权重,如果不是关键词,权重为0
  end;
 function HLGetFileKeyAt(HANDLE :THandle;  iIndex:integer):SHLSegWord;stdcall; external 'HLSSplit.dll';
在delphi调用后返回的值:s_szWord是空,s_fWeight是零.
请问大侠们,问题在哪里,指点一二!

解决方案 »

  1.   

    上面的结构体不是C的吧,是C++或许用cdecl试试
      

  2.   

    char *s_szWord//不能用delphi中的string代替用pchar
      

  3.   

    function HLGetFileKeyAt(var HANDLE :THandle;  iIndex:integer):SHLSegWord;stdcall; external 'HLSSplit.dll';
      

  4.   

    定义记录时应该加Packed关键字
      

  5.   

    我说错了,是C++,自带的调用例子在VC++6.0可以实现。
    各位大侠,上面的方法我试了还是不行。
      

  6.   

    问题已解决,方法;
    SegWord =  Record
         s_szWord:string; //字符串
         s_dwPOS:integer;  //词性标志
         s_fWeight:real;//关键词权重,如果不是关键词,权重为0
      end;
    SHLSegWord=^SegWord
    定义为指针记录