小编The*_*Saw的帖子

如何优雅地退出X11事件循环?

我找到的几乎每个教程都告诉我为我的事件循环执行此操作:

XEvent event;

while (true)
{
    XNextEvent(display, &event);

    switch (event.type)
    {
        case Expose:
            printf("Expose\n");
            break;

        default:
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,单击X关闭程序将导致此消息.

XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
after 10 requests (10 known processed) with 0 events remaining.
Run Code Online (Sandbox Code Playgroud)

对我来说,这些例子建议使用无限循环确实很奇怪.这听起来并不自然,我的其他X11程序也不这样做.所以我四处搜寻.我发现了如何捕获窗口关闭事件.

Atom wmDeleteMessage = XInternAtom(mDisplay, "WM_DELETE_WINDOW", False);
XSetWMProtocols(display, window, &wmDeleteMessage, 1);

XEvent event;
bool running = true;

while (running)
{
    XNextEvent(display, &event);

    switch (event.type)
    {
        case Expose:
            printf("Expose\n");
            break;

        case ClientMessage:
            if (event.xclient.data.l[0] == wmDeleteMessage)
                running = false; …
Run Code Online (Sandbox Code Playgroud)

c linux x11 xlib

39
推荐指数
2
解决办法
1万
查看次数

C++二进制文件如何取代自己?

我之前在更一般的设计背景下问过这个问题.现在,我想谈谈具体细节.

想象一下,我已经app.exe跑了.它下载update.exe到同一个文件夹中.怎么会app.exe复制update.exe内容app.exe?我在C++上下文中特别要求.我需要某种第三个中介应用程序吗?我需要担心文件锁定吗?什么是二进制更新本身最强大的方法(除非有令人讨厌的IT员工拥有极端的文件权限)?理想情况下,我希望看到可移植解决方案(Linux + OSX),但Windows是主要目标.

c++ file launcher

28
推荐指数
3
解决办法
1万
查看次数

应用程序启动器如何更新自身?

发射器在游戏中最常见.想想英雄联盟,星际争霸II,或几乎所有的MMO.在开始实际游戏之前,您有一个小型启动器应用程序,负责更新和修补.

我想用我正在开发的特定非游戏应用程序来移动这个方向.启动器的概念非常有意义:它检查更新,替换相应的二进制文件/库,可能运行完整性检查,并启动应用程序.但是,发射器如何更新自己?这往往是一个罕见的事件,但它是如何完成的?启动程序是否真的只是写了它当前正在运行的二进制文件?或者下载后是否有某种交换步骤?我需要能够将(罕见的)更新推送到启动器(特别是如果我在发射器中发现了一些错误).

我的特定项目将在C#中,但我对概念上类似的C++和/或Java解决方案感兴趣以供将来参考.

c# c++ java launcher

19
推荐指数
1
解决办法
3761
查看次数

如何在Lua中制作2D阵列?

如何用Lua制作2D阵列?我需要动态创建它.

local tbl = { { } }
Run Code Online (Sandbox Code Playgroud)

像上面的东西,但我可以指定多少项.在我的情况下,他们将是相同的金额.我基本上想要像tbl [3] [5]那样访问它.

谢谢

arrays lua

16
推荐指数
1
解决办法
3万
查看次数

添加枚举值是否会破坏二进制兼容性?

想象一下DLL中的这个枚举.

public enum Colors
{
    Red,
    Green
}
Run Code Online (Sandbox Code Playgroud)

添加枚举值是否会破坏二进制兼容性?如果我要更改它,现有的EXE会破坏吗?

public enum Colors
{
    Red,
    Green,
    Blue
}
Run Code Online (Sandbox Code Playgroud)

我看到了这个答案,但它似乎解决了插入值的问题.如果我只在最后添加值,那可以吗?

c# enums binary-compatibility

13
推荐指数
1
解决办法
2804
查看次数

在ASP.NET Core SignalR中,如何从服务器向客户端发送消息?

我已经使用新发布的ASP.NET Core 2.1成功设置了SignalR服务器和客户端.我通过ChatHub扩展建立了一个聊天室Hub:每当有来自客户端的消息时,服务器就会通过它将其反弹回来Clients.Others.

我还不了解的是如何向客户端发送消息而不是作为对传入消息的响应.如果服务器正在工作并产生结果,我如何获得访问权限Hub以便向特定客户端发送消息?(或者我甚至需要访问Hub?是否有其他方式发送消息?)

搜索此问题很困难,因为大多数结果来自旧版本的ASP.NET和SignalR.

c# asp.net-core asp.net-core-signalr

12
推荐指数
1
解决办法
1万
查看次数

如何在本机活动中创建OpenGL ES 2上下文?

对于我的生活,我找不到任何适用于OpenGL ES 2的纯Android NDK示例.包含native-activity示例项目的示例项目构建了ES 1上下文.是否有任何示例程序演示如何在纯C++中创建ES 2上下文?

c++ opengl-es android-ndk egl

10
推荐指数
1
解决办法
3918
查看次数

指向数组的简单指针

以下代码有什么作用?

obj *x = new obj[100];
delete x; // Note the omission of []
Run Code Online (Sandbox Code Playgroud)

它只删除数组中的第一个元素吗?

c++

9
推荐指数
2
解决办法
293
查看次数

Windows中的llvm-config在哪里?

我对Visual Studio答案或MinGW答案持开放态度.我刚刚使用CMake和Visual Studio 2010完成了LLVM 3.2的构建.一切顺利,但我没有llvm-config.我需要它吗?我在intertubes上看到的每个例子都使用了该工具.如果我不需要它,如何配置我的项目以使用LLVM?

为了清楚起见,我不是在尝试使用LLVM工具/编译器(比如clang和诸如此类).我正在尝试编写使用LLVM库生成LLVM IR的C++代码,甚至可以编译这些东西.我设置了include和lib文件夹.我llvm-config在Linux上运行,看到了很多宏和库.

我有一个充满好吃的精彩文件夹.它没有llvm-config在那里:C:\Program Files (x86)\LLVM\

mingw llvm visual-studio-2010

9
推荐指数
2
解决办法
4157
查看次数

如何在MinGW中使用Vulkan?(R_X86_64_32错误)

我正在尝试设置一个裸骨程序来使用Vulkan.我安装了LunarG SDK.我有一个基本上只是打电话的小程序vkCreateInstance.我用这行编译:

g++ -std=c++11 -I/c/VulkanSDK/1.0.3.1/Include -L/c/VulkanSDK/1.0.3.1/Bin main.cpp -lvulkan-1
Run Code Online (Sandbox Code Playgroud)

我使用64位mingw(MSYS2)得到此编译器错误:

 relocation truncated to fit||R_X86_64_32 against symbol `__imp_vkCreateInstance' defined in .idata$5 section in C:\VulkanSDK\1.0.3.1\Bin/vulkan-1.lib(vulkan-1.dll.b)|
Run Code Online (Sandbox Code Playgroud)

我该怎么办?我是否链接到正确的图书馆?

c++ vulkan

7
推荐指数
1
解决办法
5656
查看次数