【发布时间】:2021-11-24 09:15:31
【问题描述】:
正如标题所暗示的那样,当我在调试模式下(不是在发布模式下)运行我的程序时,wxString 构造函数总是抛出读取访问冲突异常。我猜它与编码有关,但我不知道如何修复它。 当我将项目从 Visual Studio 移植到 CMake 时出现问题。
这个:
wxString str(std::string("Hello world!"));
抛出异常:
Exception 0xc0000005 encountered at address 0x7ffda0bd8670: Access violation reading location 0xffffffffffffffff
我已经查看了反汇编和 wxWidgets 抛出的问题
wxMBConv::cMB2WC(char const *,unsigned __int64,unsigned __int64 *)const :
[...]
callq *(%rax)
[...]
构建规范是:
CMake ver. 3.20.2 in Debug mode
MSVC ver. 16.0 with architecture amd64
LLDB ver. 9.0
wxWidgets ver. 3.1.5#2
所有文件都以 UTF-8 编码,我更喜欢使用带有窄字符串的 UTF-8
【问题讨论】:
-
你是说 MSVC 没有发生吗?
-
不,这与编码无关,要么存在一些微妙的构建不匹配(即您使用不同的编译器选项编译了库和编译器),要么是程序中其他地方的错误。为了区分这两种情况,请将上面的行添加到最小的 wxWidgets 示例(其源代码树中的
samples/minimal)并检查您是否仍然可以在那里重现问题。
标签: c++ debugging wxwidgets wxstring