就像标题所暗示的那样,当我在调试模式下(而不是在发布模式下)运行我的程序时,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