gpt4 book ai didi

C++:ToUnicode 函数上的 SIGSEGV (windows)

转载 作者:行者123 更新时间:2023-11-28 03:39:18 26 4
gpt4 key购买 nike

首先,请原谅我糟糕的英语;)

我想使用 Windows 函数 ToUnicode (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646320(v=vs.85).aspx) 将虚拟键码转换为使用 C++ 的 unicode 字符。
但每次我调用该函数时,Windows7 都会说“MyProcess funktioniert nicht mehr”——我不知道英文等价物,也许是“MyProcess 不再工作”?! - 我可以选择调试 MyProcess 或关闭。

但是我的 gdb 调试器显示我得到了一个 SIGSEGV,它告诉我我认为存在数据访问冲突。

这是我使用的代码:

BYTE kbd[256];
GetKeyboardState(kbd);
UINT vk = 65; //vitual key represents 'a'
UINT sc = 30; //scan code represents 'a'
LPWSTR chars;

ToUnicode(vk,sc,kbd,chars,2,0);

我什至尝试了 ToAscii 函数,但我得到了同样的错误:SIGSEGV

你能帮帮我吗? =)

最佳答案

ToUnicode 需要一个可以写入翻译结果的缓冲区。

你给它一个指向你内存中某处(随机)的单元化指针 - 这是段错误的来源,ToUnicode 尝试写入不属于你的进程的内存。

有关此功能的正确用法,请参见以下示例

//Just a snippet showing the initialization the buffer part    
const int BUFFER_LENGTH = 2; //Length of the buffer
WCHAR chars[BUFFER_LENGTH];

ToUnicode(vk,sc,kbd,chars,BUFFER_LENGTH,0);

关于C++:ToUnicode 函数上的 SIGSEGV (windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9856172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com