【发布时间】:2021-06-06 21:40:22
【问题描述】:
我已经习惯了win32 API的恶作剧,但这很烦人,我这次面临的问题是命名管道名称的分配,这就是我正在做的事情:
LPTSTR lpszPipename = TEXT("\\\\.\\pipe\\mynamedpipe");
这是verbatim from MSDN webpages,令人惊讶的是,这不会编译并发出以下错误:
E0144 “const wchar_t *”类型的值不能用于初始化“LPTSTR”类型的实体
现在演员将解决分配,但我得到一个 109 错误,你猜对了,ERROR_BROKEN_PIPE。
我应该如何解决这个问题?
【问题讨论】:
-
更改
LPTSTR->LPCTSTR- 错字?需要是指向const的指针以指向文字字符串。旧的 MSVC 曾经允许这样做,但后来的版本更符合 C++ 标准。 -
@RichardCritten 好吧,如果是,它不是我的,它来自 Microsoft,但它似乎使错误消失了,我将不得不检查损坏的管道错误是否也消失了。跨度>
-
你根本不需要声明
lpszPipename。直接将"\\\\.\\pipe\\mynamedpipe"传递给CreateNamedPipeW。ERROR_BROKEN_PIPE- 绝对是另一个问题和问题
标签: c++ winapi named-pipes