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

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

#include <stdio.h>
#include <Windows.h>

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”命令行选项不兼容

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值