在通用 Windows 应用程序 C++ 上使用 win32 DLL 库

吉布斯

我能够按照本教程http://tutplusplus.blogspot.com/2011/04/c-tutorial-create-dll-in-vc-20102008.html 中指示的说明编译基于 dll 库我编译了它,没有问题。我还在一个空的 win32 控制台应用程序解决方案上测试了我的 dll 库,通过添加头文件、源文件和更改链接器设置,它编译得很好。问题是这次我无法在通用 Windows 应用程序解决方案上使用 dll 库。我添加了头文件和源文件并更改了链接器设置。

当我编译项目解决方案时,它要求我包含pch.h到我的库的源文件中,所以我#include "pch.h"在顶部添加了这一行

之后,出现了其他编译​​器错误。

'CreateFile': identifier not found'SetCommState': identifier not found

我相信我当前项目解决方案的编译重新编译了所有内容,而没有考虑 dll 库的编译。如何让项目解决方案只编译自己的源文件和头文件?

库标题:

#pragma once
#include <Windows.h>

namespace nmspace
{
    class SerialPort 
    {
    public:
        static __declspec(dllexport) int connect();
    };
}

库来源:

#include <iostream>
using namespace std;
#include "SimpleH.h"
#include <Windows.h>

namespace nmspace
{
    int SerialPort::connect() 
    {
        int error = 0;
        DCB dcb;

        memset(&dcb, 0, sizeof(dcb));

        dcb.DCBlength = sizeof(dcb);

        dcb.BaudRate = 57600;
        dcb.Parity = NOPARITY;
        dcb.fParity = 0;
        dcb.StopBits = ONESTOPBIT;
        dcb.ByteSize = 8;

        HANDLE m_serialPortHandle = CreateFile(L"COM7", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, NULL, NULL);

        if (m_serialPortHandle != INVALID_HANDLE_VALUE) {
            if (!SetCommState(m_serialPortHandle, &dcb))
                error = 2;
        }
        else
            error = 1;

        return error;
    }

}
用户7860670

您将无法使用此 DLL,因为它使用SetCommState仅适用于桌面应用程序的功能。您应该在可用于 UWP 应用程序的桌面 API 列表中查找您尝试使用的函数

至于CreateFile它不是一个函数,而是一个扩展到CreateFileACreateFileW取决于项目 Unicode 设置的宏您应该CreateFile2改用它可用于桌面和 UWP 应用程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用C#访问UI Spy无法看到的元素以自动化Win32应用程序

来自分类Dev

Boost.Asio Win32 Windows应用程序

来自分类Dev

使用视图和数据库从Windows 8.1 / Windows Phone 8.1应用程序创建dll

来自分类Dev

DLL加载失败-不是有效的Win32应用程序-使用NumPy

来自分类Dev

JNI C ++ DLL-'UnsatisfiedLinkError:%1不是有效的Win32应用程序'

来自分类Dev

如何使用C#在通用Windows应用程序中包含计时器

来自分类Dev

在android应用程序中使用dll库

来自分类Dev

Windows Phone 8通用应用程序-在C#代码中使用JS

来自分类Dev

使用C#将颜色合并到位图中(通用Windows应用程序)

来自分类Dev

如何在Win32桌面应用程序中使用自定义WinRT库?

来自分类Dev

Windows通用应用程序(WIN 10)应用程序清单验证错误

来自分类Dev

无法添加ListViewItem-Windows通用应用程序C ++

来自分类Dev

无法加载动态库php_sqlsrv_7_nts.dll不是有效的Win32应用程序

来自分类Dev

Win32在应用程序内使用资源字体

来自分类Dev

Windows XP上的Inno Setup安装程序显示“无效的Win32应用程序”

来自分类Dev

OSError:[WinError 193]%1不是有效的Win32应用程序错误,在Windows上通过Selenium和Python使用GeckoDriver和Firefox

来自分类Dev

OSError:[WinError 193]%1不是有效的Win32应用程序,同时使用CTypes读取python中的custim DLL

来自分类Dev

在Win32应用程序中使用Windows窗体

来自分类Dev

DLL加载失败-不是有效的Win32应用程序-使用NumPy

来自分类Dev

使用C#将颜色合并到位图中(通用Windows应用程序)

来自分类Dev

Windows通用应用程序(WIN 10)应用程序清单验证错误

来自分类Dev

使用Win32 C ++和钩子从应用程序中的按钮获取文本

来自分类Dev

C#应用程序中的Win32异常

来自分类Dev

从通用Windows 10应用程序参考经典类库

来自分类Dev

无法添加ListViewItem-Windows通用应用程序C ++

来自分类Dev

将SQLite Windows窗体应用程序迁移到通用Windows应用程序(C#)

来自分类Dev

C#程序AccessViolationException中的Win32 DLL

来自分类Dev

从 Win32 控制台应用程序调用 dll [C]

来自分类Dev

在 win32 控制台应用程序中使用 ntdll.dll 好不好?

Related 相关文章

  1. 1

    如何使用C#访问UI Spy无法看到的元素以自动化Win32应用程序

  2. 2

    Boost.Asio Win32 Windows应用程序

  3. 3

    使用视图和数据库从Windows 8.1 / Windows Phone 8.1应用程序创建dll

  4. 4

    DLL加载失败-不是有效的Win32应用程序-使用NumPy

  5. 5

    JNI C ++ DLL-'UnsatisfiedLinkError:%1不是有效的Win32应用程序'

  6. 6

    如何使用C#在通用Windows应用程序中包含计时器

  7. 7

    在android应用程序中使用dll库

  8. 8

    Windows Phone 8通用应用程序-在C#代码中使用JS

  9. 9

    使用C#将颜色合并到位图中(通用Windows应用程序)

  10. 10

    如何在Win32桌面应用程序中使用自定义WinRT库?

  11. 11

    Windows通用应用程序(WIN 10)应用程序清单验证错误

  12. 12

    无法添加ListViewItem-Windows通用应用程序C ++

  13. 13

    无法加载动态库php_sqlsrv_7_nts.dll不是有效的Win32应用程序

  14. 14

    Win32在应用程序内使用资源字体

  15. 15

    Windows XP上的Inno Setup安装程序显示“无效的Win32应用程序”

  16. 16

    OSError:[WinError 193]%1不是有效的Win32应用程序错误,在Windows上通过Selenium和Python使用GeckoDriver和Firefox

  17. 17

    OSError:[WinError 193]%1不是有效的Win32应用程序,同时使用CTypes读取python中的custim DLL

  18. 18

    在Win32应用程序中使用Windows窗体

  19. 19

    DLL加载失败-不是有效的Win32应用程序-使用NumPy

  20. 20

    使用C#将颜色合并到位图中(通用Windows应用程序)

  21. 21

    Windows通用应用程序(WIN 10)应用程序清单验证错误

  22. 22

    使用Win32 C ++和钩子从应用程序中的按钮获取文本

  23. 23

    C#应用程序中的Win32异常

  24. 24

    从通用Windows 10应用程序参考经典类库

  25. 25

    无法添加ListViewItem-Windows通用应用程序C ++

  26. 26

    将SQLite Windows窗体应用程序迁移到通用Windows应用程序(C#)

  27. 27

    C#程序AccessViolationException中的Win32 DLL

  28. 28

    从 Win32 控制台应用程序调用 dll [C]

  29. 29

    在 win32 控制台应用程序中使用 ntdll.dll 好不好?

热门标签

归档