小编Par*_*avi的帖子

使 strlcpy 在 Linux 中可用

我正在尝试编译最初编写的源代码FreeBSD,因为strlcpy 不包含在 linux GlibC 中,所以我现在停在这个阶段。

GCC 建议我可以使用strncpy但我不想实际更改源代码。

我需要重新编译我的 LibC 吗?

任何帮助表示赞赏。

linux gcc freebsd glibc

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

如何在 GTK+3 的 gtk 窗口中创建 cairo 对象

我正在尝试使用 cairo 绘制一些弧线,但 gcc 警告我gdk_cairo_create() is deprecated. Use gdk_window_begin_draw_frame() and gdk_drawing_context_get_cairo_context() instead

为了解决这个问题,我做了一些研究,发现对于 gdk_window_begin_draw_frame() 我需要“GdkWindow”。我一直在我的窗口中使用 GtkWidget,所以我需要将“GtkWidget”转换为“GdkWindow”,但 gtk_widget_get_window() 返回NULL 并导致段错误。

#include <gtk/gtk.h>
#include <cairo.h>
void main(int argc , char **argv){
    gtk_init(&argc , &argv);
    GtkWidget *win;
    GdkWindow *gdkwin;
    GdkDrawingContext *dc;

    cairo_region_t *region;

    cairo_t *cr;


    win = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    region = cairo_region_create();

    gdkwin = gtk_widget_get_window(GTK_WIDGET(win));

    //Here gdkwin should contain a GdkWindow but it's NULL.

    gc = gdk_window_begin_draw_frame(gdkwin , (const cairo_region_t*)&region);
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

这是运行时错误:

(a.out:6852): Gdk-CRITICAL **: 23:53:06.042: gdk_window_begin_draw_frame: assertion 'GDK_IS_WINDOW (window)' failed …
Run Code Online (Sandbox Code Playgroud)

c gtk cairo

6
推荐指数
1
解决办法
4541
查看次数

当第一个程序未在 BASH 中退出时使用 2 级管道的问题

考虑一下:

xinput  --test 11 | grep "button press   1"
Run Code Online (Sandbox Code Playgroud)

* 11是我的光电鼠标索引(可以是其他任何东西),“button press 1”表示左键单击。

当我点击屏幕上的某个地方时,会显示:

button press   1
Run Code Online (Sandbox Code Playgroud)

到目前为止没有问题。但是当我想使用它的输出作为我的 C 程序的输入时,我注意到在另一层管道之后程序的标准输入总是空的:

xinput  --test 11 | grep "button press   1" | ./poll_test
Run Code Online (Sandbox Code Playgroud)

这是我的poll_test代码:

xinput  --test 11 | grep "button press   1"
Run Code Online (Sandbox Code Playgroud)

尽管有点击,它什么也不打印。

这令人困惑。这不是正常行为。例如,当我运行它时:

ls | grep a | grep b
Run Code Online (Sandbox Code Playgroud)

它成功地向我展示了结果。唯一的区别是lshere 在打印到标准输出后退出,但在xinput版本中并非如此。

我花了很多时间编写一个脚本来在单击鼠标时发出哔哔声,但没有奏效。所以我想使用 C 程序,因为bash 中没有轮询功能。

据我所知,bash 中的管道工作是这样的:

第二个程序(管道语句中的正确程序)被执行,直到它想要从它的stdin读取并且它停止继续前进,直到有一些东西可以从STDIN读取。

考虑到这一点,我发布的命令中的第三个程序应该能够读取输出。第一个程序退出时就是这种情况。

如果管道问题不起作用,下一步将是直接使用libxcb …

linux bash pipe

6
推荐指数
1
解决办法
66
查看次数

在 javascript 中更改 CSS 属性

我想使用 JS 在 html 图像中进行渐变模糊过渡。我使用的是初始样式,然后使用文档对象和全局变量更新样式属性。

但以下代码不会更新任何内容:

var val = 8

function adjust_blur() {
  document.getElementById("image").style.filter = blur(String(val) + "px")
  val -= 1;
}

function update_blur() {
  window.setTimeout(adjust_blur, 1000)
}
Run Code Online (Sandbox Code Playgroud)
#image {
  filter: blur(1px);
  max-width: 600px;
}
Run Code Online (Sandbox Code Playgroud)
<img src='https://image.freepik.com/free-vector/modern-yellow-bitcoin-design_1017-9631.jpg' id='image'>
Run Code Online (Sandbox Code Playgroud)

html javascript css

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

CMake 错误:找不到 PythonLibsUnix

当我尝试编译Blender时遇到以下问题:

Could NOT find PythonLibsUnix (missing: PYTHON_LIBRARY PYTHON_LIBPATH
PYTHON_INCLUDE_DIR PYTHON_INCLUDE_CONFIG_DIR)
Run Code Online (Sandbox Code Playgroud)

操作系统:Ubuntu 20.04。

谢谢。

linux cmake blender

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

QtCreator找不到emscripten编译器

我按照指南使用emsdk$PATH安装了 emscripten 并激活了它。然后我按照 emsdk 本身的指示配置了我的文件并获取了源。现在我可以在终端中emsdk-master/emsdk_env.sh访问emcc和。该文件也存在(这是 QtCreator 将生成的文件) fetch 来查找 WASM 编译器的路径)。em++~/.emscripten

Qt 的套件WebAssembly也已由 Qt 安装Maintenance Tool

现在,在 QtCreator 的套件配置中,我得到了这个(QtCreator 在采购后通过终端打开emsdk_env.sh):

在此输入图像描述

它本身无法确定编译器的路径。

“编译器”选项卡中,我手动添加了一个编译器,如下所示:

在此输入图像描述

但之后我在“套件”选项卡中收到此错误:

在此输入图像描述

这意味着什么?我跳过了什么?有人有这样做的经验吗?

另外,将编译器从 更改em++wasm-32-wasi-clang++clang++不会改变任何内容。

在此输入图像描述

顺便说一句,如果我使用该套件,我会得到:

Error while parsing file whatever.pro. Giving up.
Project ERROR: Cannot run target compiler 'em++'. Output:
===================
===================
Maybe you forgot to setup the environment?
Run Code Online (Sandbox Code Playgroud)

请不要告诉我这个问题是这个 …

linux qt qt-creator emscripten webassembly

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

如何以编程方式隐藏 QtDesigner“设计”模式创建的小部件?

我想知道如何在 QtCreator 设计模式下创建默认隐藏的 QLabel?
在右侧面板的属性列表中,没有任何关于功能的选项visibility,并且添加label->hide()setupUi功能(编译 ui 文件并添加到项目标题后)没有任何区别。

qt qt-designer qt5

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

Qt5 的 CMAKE_PREFIX_PATH

我想编译这个,它需要Qt5.14,并且我从我的 Linux 存储库安装了 Qt 5.12。我刚刚从源代码编译了 Qt 并将其安装在/usr/local/Qt-6.0.0/(默认位置)。
但 CMake 打印以下错误,尽管我添加了set(CMAKE_PREFIX_PATH "/usr/local/Qt-6.0.0/include")和/或set(CMAKE_PREFIX_PATH "/usr/local/Qt-6.0.0/")

The following configuration files were considered but not accepted:

/usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake, version: 5.12.8
/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake, version: 5.12.8
Run Code Online (Sandbox Code Playgroud)

linux qt cmake qt5

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

为什么不能将 Q_OBJECT 与模板类一起使用?

这里有一个类似的问题,正在寻找解决方法和一个很好的指南,它描述了 Qt 中的元对象系统。但这并不能直接解释为什么不能在元对象系统中使用模板类。这是一个令人烦恼的限制。

有人知道为什么吗?

c++ qt templates qt5 qmetaobject

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

介子:找不到依赖关系 - 尝试了 pkg-config 和 cmake

我正在尝试编译Pulse Effects项目,运行后遇到了这个问题meson build

Dependency gstreamer-1.0 found: NO (tried pkgconfig and cmake)
src/meson.build:97:0: ERROR:  Dependency "gstreamer-1.0" not found, tried pkgconfig and cmake
Run Code Online (Sandbox Code Playgroud)

但肯定它已经安装并sudo apt install gstreamer-1.0说:

libqt5gstreamer-1.0-0 is already the newest version (1.2.0-5).
gir1.2-gstreamer-1.0 is already the newest version (1.14.5-0ubuntu1~18.04.1)
Run Code Online (Sandbox Code Playgroud)

我使用 ubuntu 18.04。
任何的想法?

linux build dependency-management meson-build ubuntu-18.04

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