gpt4 book ai didi

c++ - 调用构造函数时与 MFC 相关的崩溃

转载 作者:行者123 更新时间:2023-11-28 02:42:49 29 4
gpt4 key购买 nike

我目前正在 visual studio 中使用 MFC 和 CLR 编写应用程序,每当我调用我编写的类(该类用于通过 USB 控制相机)的构造函数时,我的程序就会崩溃。

我有一个基类CameraBase:

class CameraBase
{
public:
virtual bool getFrame(cv::Mat& outImage) { return true; };
};

和派生类 LumeneraCamera(针对特定相机):

class LumeneraCamera : public CameraBase
{
public:

DLL_API LumeneraCamera();

DLL_API bool connect(int cameraNum);
DLL_API bool disconnect();
DLL_API bool getFrame(cv::Mat& outImage);

private:
//Bunch of misc variables
};

这些类被编译成 DLL 并从另一个程序访问:

int main()
{
cout << "Initing camera" << endl;
camera = new LumeneraCamera();
//More operations
}

当我运行该程序时,它打印 Initing camera 然后由于 dllinit.cpp 中的断言而失败(第 133 行:VERIFY(AfxInitExtensionModule(controlDLL, hInstance));)。它在构造函数中执行任何操作之前崩溃。我不太确定问题出在哪里,但它似乎与 MFC 有关,所以我目前正在研究完全从 MFC 中解开我的项目。任何建议或修复表示赞赏!

最佳答案

根据 MSDN,如果您的 DLL 动态链接到 MFC DLL,则从该 DLL 导出的调用 MFC 的每个函数都必须在函数的最开头添加 AFX_MANAGE_STATE 宏:

AFX_MANAGE_STATE(AfxGetStaticModuleState());

关于c++ - 调用构造函数时与 MFC 相关的崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25391325/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com