none
mclInitializeApplication二次调用失败的问题 RRS feed

  • 问题

  • 我在MFC中定义了一个类CBuild,因为要在这个类中用到Matlab生成的动态链接库,所以在其构造函数中调用mclInitializeApplication()函数,代码如下:
    CBuild::CBuild()
    {
        if(!mclInitializeApplication(NULL,0))
        {
            AfxMessageBox("初始化程序失败!");
            exit(1);
        }
        if(!libHeavisideInitialize())
        {
            AfxMessageBox("初始化Heaviside链接库失败!");
            exit(1);
        }
    }
    在其析构函数如下:
    CBuild::~CBuild()
    {
        libHeavisideTerminate();
        mclTerminateApplication();
    }
      然后在另一个对话框类中定义了类CBuild的对象m_build,在这个对话框类的一个按钮响应函数中用m_build去调用CBuild中的方法。运行程序,点击这个按钮,运行正常,结果也正确,在不关闭对话框的前提下再次点击按钮,却出现“初始化程序失败!”的弹出框,说明是mclInitializeApplication的调用失败,为什么会在第二次调用的时候初始化失败呢?请问这是什么原因,怎么解决?
    2011年1月5日 10:24

答案

  • mclInitializeApplication(NULL,0)

    类似这种操作在程序的生命周期中只需要调用一次吧

    试试把它写到InitInstance里

    2011年1月6日 3:07
  • Hi miao_zi

      就像向立天说的mclInitializeApplication()在整个程序的运行过程中只能被调用一次。请您确认下您是否把此函数放在对话框的构造函数中,当放在对话框的构造函数中时,多次打开对话框就会多次调用此函数,因此会失败

        将此函数移到视图类的构造函数中,并将mclTerminateApplication()移到视图类的析构函数中,这样无论打开多少次对话框都没有问题。因为当放在视图类的构造函数中时,只会被调用一次

        如果您的问题解决了,请把有用的回答标记为答案!

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月7日 7:20
    版主

全部回复

  • mclInitializeApplication(NULL,0)

    类似这种操作在程序的生命周期中只需要调用一次吧

    试试把它写到InitInstance里

    2011年1月6日 3:07
  • Hi miao_zi

      就像向立天说的mclInitializeApplication()在整个程序的运行过程中只能被调用一次。请您确认下您是否把此函数放在对话框的构造函数中,当放在对话框的构造函数中时,多次打开对话框就会多次调用此函数,因此会失败

        将此函数移到视图类的构造函数中,并将mclTerminateApplication()移到视图类的析构函数中,这样无论打开多少次对话框都没有问题。因为当放在视图类的构造函数中时,只会被调用一次

        如果您的问题解决了,请把有用的回答标记为答案!

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月7日 7:20
    版主