如何解决WinRT 初始化错误,内存位置的 hresult_error
我无法用 WinRT/C++
初始化 wxWidgets
。
WinRT/C++
运行良好,直到我添加了 wxWidgets
支持,代码如下:
class MyApp : public wxApp {
public:
virtual bool OnInit();
};
IMPLEMENT_APP(MyApp)
void blemain() {
winrt::init_apartment();
std::wcout << "Main thread: " << std::this_thread::get_id() << std::endl;
myfunc();
}
bool MyApp::OnInit() {
blemain();
return true;
}
然后执行 winrt::init_apartment()
函数,我得到错误:winrt::hresult_error at memory location
。
帮帮我。
解决方法
好的,我找到了解决方案(见我上面的评论)。
也许问题确实在于 wxWidgets
初始化了 COM
,因此 WinRT
被破坏了。至少它现在有效。我仍然无法摆脱弹出的控制台,但它现在并没有让我太困扰。该主题可以关闭。谢谢解答!
据我所知,问题在于 winrt::init_apartment();
想要从 main()
函数中调用。但是对于 wxWidgets
的正常初始化,wxWidgets
本身会使用 main()
宏创建 IMPLEMENT_APP(MyApp)
函数。因此,我的方法是使用 IMPLEMENT_APP_NO_MAIN(MyApp)
宏。
因此,我仍然有机会实现main()
函数,从那里调用winRT
的初始化winrt::init_apartment();
,然后调用wxEntry(0,0);
来初始化wxWidgets
。当然,如果应用程序被配置为带有窗口的应用程序,则需要在链接器属性(ProjectProperties -> Linker -> System -> Subsystem)中切换到控制台应用程序。
通过这种方式,我设法绕过了 winRT
初始化错误并启动了项目。 wxWidgets
界面已呈现。一个令人不快的功能仍然是从应用程序开始的控制台,我还不知道如何处理它,也许窗口应用程序的其他一些 WinRT
功能被禁用,但这暂时不打扰我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。