gpt4 book ai didi

c - 我找不到编译器中指出的函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:00 27 4
gpt4 key购买 nike

我在 openvg 库上工作。实际上,我曾使用代码块(在覆盆子上)运行此代码:https://github.com/raspberrypi/firmware/blob/master/opt/vc/src/hello_pi/hello_font/main.c

我实现了渲染颜色并且看到了锯齿现象。但我想用同样的方法在屏幕上写文字。我分析了这个库:https://github.com/raspberrypi/firmware/blob/master/opt/vc/src/hello_pi/libs/vgfont/vgfont.h并尝试使用 graphics_resource_render_text_ext() 函数,但我在新的终端窗口中收到了这条消息:

assertion failure:font.c:176:gx_priv_render_text():inited aborted

我的编译构建消息是这样的: enter image description here

Font.c 的路径:https://github.com/adafruit/rpi-firmware/blob/master/vc/sdk/opt/vc/src/hello_pi/libs/vgfont/font.c .

我在 font.c 上转到 176. 行并尝试调用 gx_font_init()(终端窗口备注此行。)但我无法在任何地方找到此函数(我尝试在 raspberry 中找到)。如果我取消 graphics_resource_render_text_ext() 命令,我的代码就很好用。为什么我不能使用这个功能?我的代码是这样的:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include "bcm_host.h"
#include "vgfont.h"
#include "openvg.h"
#include "egl.h"
#include "vgu.h"
#include "fontinfo.h"
#include "shapes.h"
#include "eglplatform.h"
#include "graphics_x_private.h"

int main()
{
GRAPHICS_RESOURCE_HANDLE img;
uint32_t width, height;
int LAYER = 1;
bcm_host_init();

int s;

s = gx_graphics_init(".");
assert(s == 0);
s = graphics_get_display_size(0, &width, &height);
assert(s == 0);
s = gx_create_window(0, width, height, GRAPHICS_RESOURCE_RGBA32, &img);
assert(s == 0);

graphics_resource_fill(img, 0, 0, width, height, GRAPHICS_RGBA32(0, 0, 0, 0x00));
graphics_display_resource(img, 0, LAYER, 0, 0, GRAPHICS_RESOURCE_WIDTH, GRAPHICS_RESOURCE_HEIGHT, VC_DISPMAN_ROT0, 1 );

while(1)
{
graphics_resource_fill(img, 0, 0,width, height, GRAPHICS_RGBA32(0,0,0,0x55));
graphics_resource_fill(img, 600, 500, 100, 50, GRAPHICS_RGBA32(0,0,0xff,0xaa));
graphics_resource_fill(img, 600, 400, 200, 50, GRAPHICS_RGBA32(0,0xff,0,0xaa));

graphics_resource_render_text_ext( img, 100, 100, 200, 200, GRAPHICS_RGBA32(0xff,0,0,0xdd), GRAPHICS_RGBA32(0, 0xff,0, 0xdd), "hello", strlen("hello"), 20); // This line has problem.

graphics_update_displayed_resource(img, 0,0,0,0);
}

graphics_display_resource(img, 0, LAYER, 0, 0, GRAPHICS_RESOURCE_WIDTH, GRAPHICS_RESOURCE_HEIGHT, VC_DISPMAN_ROT0, 0);
graphics_delete_resource(img);

printf("Hello world!\n");
return 0;
}

注意:当我取消 graphics_resource_render_text_ext() 时没有更改编译器构建消息,但代码运行良好。

最佳答案

来自source code对于 gx_priv_render_text 似乎断言失败,因为未设置 inited 静态变量。

这个变量是通过gx_graphics_init设置的(它是here inside graphics.c),如果初始化成功,它会调用gx_priv_font_init

因此,gx_priv_initialise 中的某处初始化失败。在那里设置一个断点并逐步执行该函数,并检查日志(它应该包含在该函数中发现的错误消息之一)。

关于c - 我找不到编译器中指出的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52621109/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com