簡體   English   中英

無法在 Windows 7 下加載 QtBluetooth 5.12.0

[英]Can't load QtBluetooth 5.12.0 under Windows 7

我將一些代碼從 Qt 5.6.0 遷移到 Qt 5.12.0,兩者都是用 Visual Studio 2015 編譯的。它有一些使用QtBluetooth進行常規(無“低能量”)藍牙的代碼。 使用 5.6.0,這曾經完美地工作。

使用 Qt 5.12.0,我的應用程序將無法加載。 它報告缺少API-MS-WIN-CORE-WINRT-L1-1-0.DLLAPI-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL 我不明白為什么需要那些 WinRT 文件。 QtBluetooth.dll Dependency Walker 報告這些庫丟失。

我嘗試使用 Qt 5.12.0 編譯我的 selft 並作為QtCreator安裝的一部分下載。 我嘗試了 Windows 7 和 10,Windows 10 運行良好。 總是收到這個錯誤,我沒有找到關於在哪里可以找到這些庫或如何讓QtBluetooth不使用它們的信息。

我應該怎么做才能在 Windows 下運行基於QtBluetooth的應用程序?

編輯:提交的 Qt 錯誤: https : //bugreports.qt.io/browse/QTBUG-73272

如果您對低能耗沒有要求並且可以打擾您的用戶使用 Windows 系統設置對話框配對設備,那么我建議為不使用 QtBluetooth 的 Windows 編寫包裝器代碼。 IE

#include <Windows.h>

class win_con {
    ....

    HANDLE hcon;
    COMMTIMEOUTS *timeouts;

    // i.e. com_port = L"\\\\.\\COM1"; 
    void open_com(std::wstring com_port, int read_timeout, int write_timeout)
    {

        hcom = CreateFile(com_port.c_str(), GENERIC_READ | GENERIC_WRITE, 0, nullptr, 
            OPEN_EXISTING, 0, nullptr);
        if (hcom == INVALID_HANDLE_VALUE) ...

        timeouts = new COMMTIMEOUTS();
        memset(timeouts, 0, sizeof(COMMTIMEOUTS));
        timeouts->ReadTotalTimeoutConstant = read_timeout;
        timeouts->WriteTotalTimeoutConstant = write_timeout;
        if (!SetCommTimeouts(hcom, timeouts)) ...

    }

    void write_data(QString data)
    {
        std::string stddata = data.toStdString();
        DWORD numwritten = 0;
        if (!WriteFile(hcom, stddata.c_str(),
                static_cast<DWORD>(stddata.length()), &numwritten, nullptr)) {
            ...
        }
    }

    QString read_data(int len)
    {
        #define BUFFER_SIZE 256
        char buffer[BUFFER_SIZE];
        DWORD data_read = 0;
        if (BUFFER_SIZE < len) ....
        for (int i = 0; i < BUFFER_SIZE; i++)
            buffer[i] = 0;

        ReadFile(hcom, &buffer, len, &data_read, nullptr);

        if (read == 0) ...
        if (read < len) ...

        return QString(buffer);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM