栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

python 与qt进程间信号量使用c++封装dll库

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 与qt进程间信号量使用c++封装dll库

        最近写一个项目应用qt与python通过共享内存通信,刚开始接触python没找到进程间信号量该怎么使用,最终采用c++将信号量封装成dll,由qt和python调用(windows平台下),在打包运行的时候遇到qt 载入dll失败的情况。将dll创建过程记录一下:

#include
#include

char m_cMutexName[30];
void* m_pMutex = nullptr;

extern "C" {
    __declspec(dllexport) void createSem(const char* name);
    __declspec(dllexport) void closeSem();
    __declspec(dllexport) bool Lock();
    __declspec(dllexport) bool UnLock();
}

void createSem(const char* name)
{
    memset(m_cMutexName, 0, sizeof(m_cMutexName));
    int min = strlen(name) > (sizeof(m_cMutexName) - 1) ? (sizeof(m_cMutexName) - 1) : strlen(name);
    strncpy(m_cMutexName, name, min);
    m_pMutex = CreateMutex(NULL, false, (LPCSTR)m_cMutexName);
}
void closeSem()
{
    CloseHandle(m_pMutex);
    m_pMutex = nullptr;
}
bool Lock()
{
    //互斥锁创建失败
    if (NULL == m_pMutex)
    {
        return false;
    }
    DWORD nRet = WaitForSingleObject(m_pMutex, INFINITE);
    if (nRet != WAIT_OBJECT_0)
    {
        return false;
    }
    return true;
}
bool UnLock()
{
    return ReleaseMutex(m_pMutex);
}

        编辑属性将输出项设置为dll:

设置 优化:已禁用,全局序优化:否。否则会报错 error D8016: “/ZI”和“/GL”命令行选项不兼容

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030955.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号