小编Nid*_*ger的帖子

是否可以混淆 RTTI 数据?

我的项目目前正在编译使用-fno-rtti以防止g++在二进制文件中生成 RTTI 数据。现在我在某个时候需要 RTTI。是否可以随机化 RTTI 数据,以便每个人都无法读取名称?使用 g++/clang。

c++ rtti

5
推荐指数
1
解决办法
531
查看次数

在 macOS 中以编程方式启用、禁用和启动服务

我正在编写一个带有服务的程序。到目前为止,我所做的是创建一个辅助工具,它可以为我的进程运行提升的任务并可以通过 XPC 进行通信。

我的程序捆绑了一个服务,我想使用辅助工具来安装和启动/停止这个服务,这样我的程序就可以在设置中有一个复选框“用系统启动服务”。

我可以成功复制该服务的 plist,但我找不到任何以编程方式启用、禁用、启动或停止该服务的方法。我认为调用的解决方案system("launchctl load /path/to/service.plist");非常丑陋。目标 C 中是否有任何机制来完成此任务并获得成功或失败的结果?

macos service objective-c launchctl

5
推荐指数
1
解决办法
1781
查看次数

将 XCode 中的变量替换为 plist 文件(不是 Info.plist!)

我在 XCode 中有多个 PList 文件,并通过编辑器 -> 添加构建设置 -> 添加用户定义的设置将一些设置添加到 XCode 项目。当我在 中使用变量(例如$(MY_COOL_SETTING)时\xc3\x8cnfo.plist,效果很好。但我还有一些其他 plist 文件,它们通过链接器命令嵌入到可执行文件中(通过-sectcreate)。此 PList 文件中的变量不会替换。有没有办法告诉 XCode 将变量替换为链接器之前的值?

\n

xcode plist

5
推荐指数
1
解决办法
509
查看次数

X11和nVidia驱动程序产生奇怪的EGL行为

目前,我遇到一个奇怪的问题,我有使用GTK2,OpenGL和EGL的示例应用程序。我描述的奇怪行为仅发生在具有官方nVidia驱动程序的Linux上的nVidia GPU上。在程序中,您会看到一条注释,如果您此时在代码中未使用glFlushOR glGetError,则该代码将不会绘制三角形,而只会显示红色(纯色)。如果您致电glGetErrorglFlush,它会起作用。

有人可以向我解释为什么会这样吗?这是代码:

#include <stdio.h>
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
#include <EGL/egl.h>
#include <GL/gl.h>

static EGLDisplay egl_display;
static EGLSurface egl_surface;
static EGLContext egl_context;

static void realize_cb (GtkWidget *widget)
{
    EGLConfig egl_config;
    EGLint n_config;
    EGLint attributes[] = { EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT,
                            EGL_NONE };
    EGLint surf_attrs[] = {
        EGL_RENDER_BUFFER, EGL_BACK_BUFFER,
        EGL_NONE
    };

    egl_display = eglGetDisplay ((EGLNativeDisplayType) gdk_x11_display_get_xdisplay (gtk_widget_get_display (widget)));
    eglInitialize (egl_display, NULL, NULL);
    eglChooseConfig (egl_display, attributes, &egl_config, 1, &n_config);
    egl_surface = eglCreateWindowSurface (egl_display, egl_config, …
Run Code Online (Sandbox Code Playgroud)

c++ x11 opengl nvidia egl

5
推荐指数
1
解决办法
288
查看次数

GTK+2:透明地在其他小部件上方绘制

我被迫使用 Gtk+2。所以请不要讨论切换到 3 或 4。

我需要创建类似于 Gtk3s 的东西GtkOverlay,我需要在其他小部件上绘制透明背景。

我想使用GtkFixed并将我的“普通”小部件放在那里,然后GtkEventBox在将颜色图(如果支持)设置为透明后使用 a放在顶部并连接其公开事件。

我得到了一些工作,但它没有预期的结果。它导致事件框变得半透明(如我所愿),但现在显示下方的小部件,但显示窗口下方的所有内容。

到目前为止,这是我的代码(抱歉弄乱了):

#include <gtk/gtk.h>

GtkWidget *window;
GtkWidget *button;
GtkWidget *vbox;
GtkWidget *fixed;  
GtkWidget *event_overlay;
gboolean supports_alpha = FALSE;

static void screen_changed(GtkWidget *widget, GdkScreen *old_screen, gpointer userdata)
{
    /* To check if the display supports alpha channels, get the colormap */
    GdkScreen *screen = gtk_widget_get_screen(widget);
    GdkColormap *colormap = gdk_screen_get_rgba_colormap(screen);

    if (!colormap)
    {
        printf("Your screen does not support alpha channels!\n");
        colormap = gdk_screen_get_rgb_colormap(screen);
        supports_alpha = FALSE; …
Run Code Online (Sandbox Code Playgroud)

c linux gtk

5
推荐指数
1
解决办法
137
查看次数

std :: shared_ptr:带自定义删除器的typedef

我正在使用SDL2开发一个C++应用程序,并希望shared_ptr用来保存指针的东西.所以我这样做:

typedef std::shared_ptr<SDL_Window> SDLWindowPtr;
Run Code Online (Sandbox Code Playgroud)

我需要在整个事情上使用自定义删除器.是否可以在typedef中包含它?如果有,怎么样?调用删除功能SDL_DestroyWindow.如果没有,我如何shared_ptr使用SDL_DestroyWindow自定义删除功能?

提前致谢!

c++ sdl typedef shared-ptr

4
推荐指数
1
解决办法
739
查看次数

将大数据存储在会话变量中是一种好习惯吗?

我目前正在编写一个php站点,每次都需要查询大量数据(大约4 - 5MB).我已经有一个会话,并且想问一下,如果将这些数据存储在会话变量中的良好做法?

当前的计划是在数据库中维护一个表,其中包含表最后一次更改的时间.如果该时间戳更新,那么将再次查询数据,如果不是,则使用会话变量的数据作为其仍然一致...

这是避免查询过多数据的好方法吗?当会话大小约为5MB时,网站会有什么样的速度影响?

提前致谢!

php mysql session

3
推荐指数
2
解决办法
3910
查看次数

我是否需要从localtime()函数释放返回的指针?

我正在阅读有关的联机帮助页time.h.我到目前为止:

time_t now = time(0);
struct tm * local = localtime(&now);
Run Code Online (Sandbox Code Playgroud)

现在我可以和时间一起工作,但是我没有找到信息,如果它是我free()对变量的责任local.

c free time pointers

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

写入“stderr”时冻结

在我的程序中,在这种情况下写入 stderr 时有时会冻结:

  1. 程序启动(例如从终端)
  2. 程序分叉两次并使用 execvp 以不同的参数启动每个进程(原始文件是从 读取的/proc/self/exe
  3. 第一个启动的程序退出。
  4. 现在两个fork进程仍在运行
  5. 关闭终端第一个程序已启动
  6. 尝试使用fprintf写入来stderr工作,在某些时候我的程序会完全锁定。调试器告诉我它的 fprintf。

这里发生了什么?我已经尝试过的是,一旦没有人再监听管道,就可以防止程序崩溃SIG_IGN。但现在我陷入了困境(无论有没有SIGPIPE冻结,冻结的行为都是一样的)。SIG_IGN

任何帮助表示赞赏。

c linux freeze stderr

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

在 10.11 下为 Mac 10.9 编译

我们希望我们的软件支持低至 10.9 的 OSX 版本。在 XCode 中,您可以设置目标版本,这没问题,但是我们有另一个库链接到使用 cmake 构建的项目中。现在 XCode 抱怨 lib 是为 10.11 构建的,但我们的项目是 10.9。我可以以某种方式在命令行上告诉 clang 编译旧版本吗?

我发现的唯一信息是设置OSX_VERSION为变量,但似乎没有效果。

提前致谢!

c++ macos xcode objective-c clang

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

标签 统计

c++ ×4

c ×3

linux ×2

macos ×2

objective-c ×2

xcode ×2

clang ×1

egl ×1

free ×1

freeze ×1

gtk ×1

launchctl ×1

mysql ×1

nvidia ×1

opengl ×1

php ×1

plist ×1

pointers ×1

rtti ×1

sdl ×1

service ×1

session ×1

shared-ptr ×1

stderr ×1

time ×1

typedef ×1

x11 ×1