主函数如下:例程一运行就把TraderSpi.Cpp 中函数都运行了一次。如何单独调用TraderSpi.Cpp 中函数呢?
void main(void)
{
// 初始化UserApi
pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi(); // 创建UserApi
CTraderSpi* pUserSpi = new CTraderSpi();
pUserApi->RegisterSpi((CThostFtdcTraderSpi*)pUserSpi); // 注册事件类
pUserApi->SubscribePublicTopic(THOST_TERT_QUICK); // 注册公有流
pUserApi->SubscribePrivateTopic(THOST_TERT_QUICK); // 注册私有流
pUserApi->RegisterFront(FRONT_ADDR); // connect
pUserApi->Init();
pUserApi->Join();
// pUserApi->Release();
}如TraderSpi.Cpp 中:
void CTraderSpi::OnRtnTrade(CThostFtdcTradeField *pTrade)
{
cerr << "--->>> " << "OnRtnTrade"  << endl;
}

解决方案 »

  1.   

    需要你这个pUserApi 有单独的API给你调用,你要按他的规范
      

  2.   

    类封装的比较适合隐式调用,带lib的和.h
    单个函数比较适合显示调用LoadLibrary,获得DLL句柄,然后用函数指针去指向你需要的函数(前提你要知道函数的名字extern "C" __declspec(dllexport)标记导出)
      

  3.   

    头文件定义的函数是这样子的:
    private:
      void ReqUserLogin();
      void ReqSettlementInfoConfirm();
      void ReqQryInstrument();
      void ReqQryTradingAccount();
      void ReqQryInvestorPosition();
      void ReqOrderInsert();
      void ReqOrderAction(CThostFtdcOrderField *pOrder);   bool IsErrorRspInfo(CThostFtdcRspInfoField *pRspInfo);
      bool IsMyOrder(CThostFtdcOrderField *pOrder);
      bool IsTradingOrder(CThostFtdcOrderField *pOrder);
    };