[未答复] C++调用Matlab打包的动态库,不能多线程使用

[复制链接]
eraiyi 发表于 4 天前
本帖最后由 eraiyi 于 2021-6-10 15:29 编辑


本人最近在使用C++和MATLAB混合编程遇到了一个多线程调用的问题:
1.先编好两个.m文件(SSF_Dynamic_Index.m和ccm.m)
2.在VS中创建一个动态库工程(需要被其他项目使用)
3.在动态库工程中调用了matlab生成的dll,C++两个函数的主要部分如下:
[code]void _stdcall ssf(double params[7],double result[]) {
        if (!SSF_Dynamic_IndexInitialize())
                return ;
        std:: cout << "SSF_Dynamic_IndexInitialize" << std::endl;
        mwArray arr(1, 8, mxDOUBLE_CLASS);
        mwArray out(1, 10, mxDOUBLE_CLASS);
        arr.SetData(params, 7);
        SSF_Dynamic_Index(1, out, arr);
        out.GetData(result, out.NumberOfElements());        
        SSF_Dynamic_IndexTerminate();
}

void _stdcall testccm() {

        if (!ccmInitialize())
                return;
        std::cout << "ccmInitialize seccuss" << std::endl;
        mwArray out;
        ccm(1,out);
        ccmTerminate();
        std::cout << "ccmTerminate seccuss" << std::endl;
        std::cout << "mclTerminateApplication seccuss" << std::endl;
}

[/code]

我编译完成的动态库在被其他项目多线程调用时发现,两个方法同时在不同线程调用的话只能等其中一个运行完毕,另外一个才能开始计算,我这里怀疑是打包的设置或者是调用方式有问题,问一下吧友大神们有没有相关的经历,帮忙解答一下,感谢了!




您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表