做了个C++接口,要求调用Delphi中的回调函数,可是测试过程中出现了如下错误,请大家帮忙!
    Project d:\xx\xxx.exe faulted with with message 'access violation at 0x006c9ac read of address of 0x0001081: Process stopped User Step or run to continue!
    相关代码如下:
    Delphi中定义如下结构:
   // 回调函数类型
  THDFunction = function(wParam: WPARAM; lParam: LPARAM;
   nRequestID: Integer; IsLast: boolean):Integer;stdcall;
  {$EXTERNALSYM THDFunction}
  THDFunction1 = function(wParam: WPARAM): Integer;stdcall;
  {$EXTERNALSYM THDFunction1}
  // 以上回调函数的指针
  TPHDFunctionPoint = ^THDFunction;
  {$EXTERNALSYM TPHDFunctionPoint}
  TPHDFunction1Point = ^THDFunction;
  {$EXTERNALSYM TPHDFunction1Point}  // --回调指针结构类型--
  TRCallBacks = Record
    // Trader区
    pTraderFrontConnect: TPHDFunction1Point;                     // 主机连接
    pTraderFrontDisconnect: TPHDFunction1Point;                  // 主机断开
    pTraderFrontWarring: TPHDFunction1Point; 
  end;
在VC中,用函数将定义的变量指针传入,然后在函数中调用,代码如下
//定义函数指针
typedef int (* pfn)(WPARAM, LPARAM, int, bool) ;
typedef int (* pfn1)(WPARAM);
//定义函数指针结构
struct CPfnList
{
//Trader区
pfn1 pTraderFrontConnect;                                                 // 主机连接
pfn1 pTraderFrontDisconnect;                                            // 主机断开
pfn1 pTraderFrontWarring;                                                  // 主机警告

CPfnList *callbacklist;// 初始化回调函数指针列表 Init CallBack Point List
EXPORT int TransCBPLP(CPfnList *p)
{
callbacklist = p;
return 0;
}
//当客户端与交易后台通信连接断开时,该方法被调用。
void CTraderSpi::OnFrontDisconnected(int nReason)
{
if (callbacklist->pTraderFrontDisconnect)
callbacklist->pTraderFrontDisconnect(0);
}
这个函数调用出错,不知道为什么