【问题标题】:"PVOID" is incompatible with parameter of type "LPCTSTR"“PVOID”与“LPCTSTR”类型的参数不兼容
【发布时间】:2015-07-15 13:42:34
【问题描述】:

我正在尝试在FTDI 芯片上创建一个文件,以便我可以写入和输出数据。我从手册中得知要创建文件需要编写以下代码行:

ftHandleFile = FT_W32_CreateFile((PVOID)LocId, GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);

但是,我收到以下错误

错误 1 ​​错误 C2664: 'FT_HANDLE FT_W32_CreateFile(LPCTSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE)' : 无法将参数 1 从“PVOID”转换为 'LPCTSTR' c:\users\caristid\documents\visual studio 2013\项目\ftd2xx\ftd2xx\ftd2xx.cpp 100 1 ftd2xx

IntelliSense:“PVOID”类型的参数与“LPCTSTR”类型的参数不兼容 c:\Users\caristid\Documents\Visual Studio 2013\Projects\ftd2xx\ftd2xx\ftd2xx.cpp 100 35 ftd2xx

我认为这些是通用错误,只需使用正确的变量即可解决。

有人知道怎么做吗?

【问题讨论】:

  • 你为什么要把第一个参数转换为 void 指针?
  • 您的代码错误。但是您没有为任何人提供足够的信息来建议修复。 LocId 的数据类型是什么?
  • 长整数。我将它声明为全局参数,FTDI 函数应该接受它并自己转换它

标签: c++ visual-studio-2013


【解决方案1】:

编译器期望第一个参数是LPCTSTR 类型,它是一个“指向常量 TCHAR 字符串的长指针”。
通过将LocId 转换为PVOID,您将传入void* 作为第一个参数。
如果LocId 已经是一个字符串,则移除强制转换;否则查找要传递给函数的字符串。

【讨论】:

    猜你喜欢
    • 2018-09-07
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 2021-03-08
    • 2012-11-06
    • 2019-07-11
    相关资源
    最近更新 更多