c++ - 生成DLL时发生C++错误:const wchar_t *类型的参数与LPWSTR类型的参数不兼容

标签 c++ dll visual-studio-2019 lpwstr

我是C++编程的新手。
我需要使用教程中提供的头文件和解决方案文件来创建DLL。我从here遵循了基本步骤,但是在解决方案文件中出现以下错误:
L111!CreateProcess(L".\\phreeqc\\phreeqc.exe",L112TEXT(".\\phreeqc\\phreeqc.exe .\\phreeqc\\phreeqc_input.txt .\\phreeqc\\phreeqc_input.out .\\phreeqc\\wateq4f_plus.dat")错误:
L111

C2664 'BOOL CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFLOW,LPPROCESS_INFORMATION)': cannot convert argument 2 from 'const wchar_t[105]' to 'LPWSTR'


L112

E0167 argument of type "const wchar_t*" is incompatible with parameter of type "LPWSTR".


我了解以上代码行中的细节对你们中的许多人没有多大意义,但我希望有人至少可以理解C++错误并在此提供帮助。

最佳答案

Unicode版本的CreateProcess(这是一个映射到CreateProcessW的宏)要求lpCommandLine参数使用可写的字符串,而字符串文字是const。因此,您不能直接为该参数传递字符串文字。
相反,您可以这样更改代码:

WCHAR lpCommandLine [] = L"...";
BOOL ok = CreateProcess (L"your_application_name_here", lpCommandLine, ...);
文档here

关于c++ - 生成DLL时发生C++错误:const wchar_t *类型的参数与LPWSTR类型的参数不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64001918/

相关文章:

c++ - 类内中断

c++ - 使用静态 constexpr 成员的未解析外部符号

c++ - 将 dll 库导入 CodeBlocks 链接器时遇到问题

compiler-errors - 如何解决 “The type or namespace name ' Didstopia'找不到(您是否缺少using指令或程序集引用?)”

c++ - 用模板定义异常是个好主意吗?

c# - 使用 Mindsqualls 和 C# 对 LEGO Mindstorms 进行编程

c++ - C++ 指针是否跨 EXE 和 DLL 工作

refactoring - 在 Visual Studio 2019 中保存时重构

visual-studio-2019 - 如何将 Visual Studio 2019 for mac 降级到 8.4 版?

c++ - friend 在 C++ 中遇到麻烦