c++ - wxString(const std::string&) 在调试构建中引发读取访问冲突
问题描述
就像标题所暗示的那样,当我在调试模式下(而不是在发布模式下)运行我的程序时,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
解决方案
我想我自己发现了问题。多亏了 vcpkg,CMake 将调试版本与 wxwidgets 的发布版本链接起来,这会导致问题。该问题已在此处报告: vcpkg issue 18066
但目前还没有修复
推荐阅读
- sql-server - 分析服务将日期转换为日期时间
- groovy - 如何验证 Groovy 文件是否具有正确的语法而不运行它?
- ruby-on-rails - 如何在 Ruby on Rails 中的表之间添加查询
- jmeter - jmeter:需要执行 x 个 http 请求,每个请求有 3 个从 JSON 提取器结果中选取的对象,每 3 个
- react-native - 不变违规:元素类型无效:预期字符串:React-Native
- rabbitmq - RabbitMq 消费者直到它 ACK 或 NACK 前一条消息才收到另一条消息
- javascript - 如何将值插入到 fetch api 中的全局变量然后成功
- java - 将 Spring Batch Tasklet 失败消息传递给报告步骤。
- sparql - 在 Jena 中选择 FROM 子句不返回任何结果
- css - CSS 计数器输出不匹配