weixin_65875094 2024-07-11 15:08 采纳率: 0%
浏览 3

关于#visual studio#的问题:#include <winerror.h>(语言-c++)


// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include"framework.h"
#include <iostream>
#include <Windows.h>
#include <winioctl.h>
#include<winerror.h>
#include <BluetoothAPIs.h>
#include<string>


#pragma comment(lib, "Bthprops.lib")


BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    BLUETOOTH_FIND_RADIO_PARAMS findParams;
    ZeroMemory(&findParams, sizeof(findParams));
    findParams.dwSize = sizeof(findParams);

    HANDLE hRadio = NULL;
    HBLUETOOTH_RADIO_FIND hFind = BluetoothFindFirstRadio(&findParams, &hRadio);
    const DWORD ERROR_DEVICE_NOT_FOUND = 0x40019;

    if (hFind == NULL || hRadio == NULL)
    {
        std::wcout << "Failed to find Bluetooth radio." << std::endl;
        SetLastError(ERROR_DEVICE_NOT_FOUND);
        return FALSE;
    }

    BLUETOOTH_DEVICE_SEARCH_PARAMS searchParams;
    ZeroMemory(&searchParams, sizeof(searchParams));
    searchParams.dwSize = sizeof(searchParams);
    searchParams.fReturnAuthenticated = TRUE;
    searchParams.fReturnRemembered = TRUE;
    searchParams.fReturnConnected = TRUE;
    searchParams.fIssueInquiry = TRUE;

    BLUETOOTH_DEVICE_INFO deviceInfo;
    ZeroMemory(&deviceInfo, sizeof(deviceInfo));
    deviceInfo.dwSize = sizeof(deviceInfo);

    HBLUETOOTH_DEVICE_FIND hFindDevice = BluetoothFindFirstDevice(&searchParams, &deviceInfo);

    if (hFindDevice == NULL)
    {
        std::wcout << "Failed to find Bluetooth devices." << std::endl;
        SetLastError(ERROR_DEVICE_NOT_FOUND);
        BluetoothFindRadioClose(hFind);
        return FALSE;
    }

    do
    {
        std::wstring deviceName(deviceInfo.szName);
        std::wstring address = L"";
        for (int i = 0; i < 6; i++)
        {
            address += std::to_wstring(deviceInfo.Address.rgBytes[5 - i]);
            if (i < 5)
                address += L":";
        }

        std::wcout << L"Device Name: " << deviceName << L", Address: " << address << std::endl;

    } while (BluetoothFindNextDevice(hFindDevice, &deviceInfo));

    BluetoothFindDeviceClose(hFindDevice);
    BluetoothFindRadioClose(hFind);
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
以上代码在visual studio 2020版本 中的动态链接库中运行没有报错,平台和电脑操作系统都是64位的运行的时候显示无法启动程序不是win32位应用程序有没有大佬在自己的电脑运行一下试试可以运行出来吗。







  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-07-11 15:08
    关注

    引自免费微信小程序:皆我百晓生

    你的代码看起来是C++编写的,并且设计用于在Windows操作系统中运行。你遇到的问题是程序无法启动,提示“不是有效的Win32应用程序”。这通常是由于以下原因之一导致的:

    1. 平台配置问题:确保你的Visual Studio配置正确,用于生成与你的操作系统和硬件架构相匹配的二进制文件。例如,如果你的操作系统是64位的,你需要确保你的项目也配置为生成64位二进制文件。你可以在项目属性中检查这些设置。
    2. 编译器设置问题:检查你的编译器设置以确保没有包含可能导致这个问题的指令或选项。
    3. 依赖问题:确保你的项目链接了所有必要的库。在你的代码中,你链接了Bthprops.lib库,确保这个库在你的系统上是可用的,并且兼容你的操作系统和Visual Studio版本。
    4. 环境问题:在某些情况下,操作系统或Visual Studio的安装可能不完整或损坏。尝试重新安装或更新Visual Studio到最新版本可能有助于解决问题。

    关于你的代码,除了上述的一般性建议外,没有明显的逻辑错误或编码问题。为了更好地诊断问题,我建议你尝试以下步骤:

    • 确保你的Visual Studio配置为生成64位应用程序。你可以在项目属性中的“平台目标”部分检查这一点。
    • 尝试在一个干净的、已知良好的环境中重新编译和运行你的代码。这可以帮助你确定问题是否与环境有关。
    • 使用Visual Studio的调试工具进行调试,查看是否有任何运行时错误或异常被抛出。

    如果你仍然无法解决问题,建议创建一个简单的“Hello World”DLL项目,尝试在相同的环境中运行,以确定问题是否特定于你的代码还是与环境有关。如果简单的项目能够运行,那么你可以逐步添加更多的代码和功能,直到你能够定位具体问题所在。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月11日