我用MFC扩展DLL导出了一个类(WorkerThread),并另外创建两个MFC 扩展DLL(类名:GetPacket、BasicAnalyzer),都分别使用WorkerThread类作为GetPacket与BasicAnalyzer的成员,并在主程序中调用两个DLL(即使用GetPacket类、BasicAnalyzer类),主程序先调用GetPacket类成员函数时变量值正常,但调用BasicAnalyzer类成员函数的WorkerThread类函数时,类成员变量值不正常,请问是何原因?谢谢!

解决方案 »

  1.   

    感觉是WorkerThread地址交错获取出错啦, GetPacket调用的的WorkerThread DLL 地址 在BasicAnalyzer里也用上, 最好WorkerThread 类放到GetPacket与BasicAnalyzer 动态库里面去, 不要单独分开整成DLL!
      

  2.   

    你的程序架构没做好。我建议你在BasicAnalyzer类中放一个WorkerThread类的指针,最好只暴露接口。
      

  3.   


    不同意,公用的类封装到较低层的dll里,这种情况很常见,
    至于为何第二个dll的调用有问题,可能跟WorkerThread类的实例创建点有关,建议不要用对象做
    成员变量而改用WorkerThread类型的指针,在BasicAnalyzer类的构造函数中new WorkerThread,
    或者由主程序new WorkerThread,并通过BasicAnalyzer类提供的接口将指针传给它
      

  4.   

    多次调用MFC扩展DLL是很正常的事情感觉可能与你WorkerThread类的实现有关
      

  5.   

    WorkerThread类  调用了COM 函数没有?
      

  6.   

    GetPacket、BasicAnalyzer 是否使用同一个参数,不同变量都记得初始化