[cairo/skija]glib 2.36之前版本需要调用 g_type_init
clq
浏览(624) -
2022-12-13 15:34:32 发表
编辑
关键字:
[cairo/skija]glib 2.36之前版本需要调用 g_type_init
因为我要在阿里云 windows server 2012 中绘图,而 skija 在 windows server 2016 的 d3d12 有的情况下才能用。所以只好回头用 cairo ,其实两者的中文资料都特别少。
skija 调用的是 google 的那个 android 也在用的库。搞完这个我都心有余ji了,感觉还是直接上 svg 然后用 cairo 转换成 png 最通用。golang 的那个库的 js 的 canvas 当然也不错。
不过 golang 的那个是个人作品 canvas 本质上就是 cairo/skia ,python 下也能用 cairo 不过它那个数学库似乎不是这个为基础的。
--------------------------------------------------------
其实,只是纯使用 cairo 是不需要 glib ,但因为 svg 转换要用到 librsvg ,而 librsvg 早期是用到了 glib 的,所以最好是先调用一下
procedure g_thread_init(vtable:THandle); cdecl; external 'libgthread-2.0-0.dll';
procedure g_type_init(); cdecl; external 'libgobject-2.0-0.dll';
这两个函数,默认 delphi7 是不显示提示的,所以有错误时也没看到,搞了好久。要开启控制台,方法:
(*
//开启控制台
在delphi7的project->options里设置,打开project option对话框,在Linker选项卡里把EXE and DLL Options里generate console application前面的钩.
*)
我是百思不得其解决下,转而用 qt 编译 32 位调用 d7 同样的 dll 后发现是这个错误的。不过 lazarus 的 64 位使用的 dll 版本这样仍然不对。(来自 Meld windows 版本的 gtk cairo dll)
https://blog.csdn.net/u010164190/article/details/106696454
Glib2版本差异初始化(三)
注意:
glib 2.36之前版本,mian()里需要调用 g_type_init()函数来初始化库GObject type system!!!
glib 2.36之前版本,mian()里需要调用 g_type_init()函数来初始化库GObject type system!!!
glib 2.36之前版本,mian()里需要调用 g_type_init()函数来初始化库GObject type system!!!
1.sample.c
#include
#include
int main(){
#if !GLIB_CHECK_VERSION(2,32,0)
if (!g_thread_supported ())
g_thread_init (NULL);
#endif
#if !GLIB_CHECK_VERSION(2,36,0)
g_type_init ();
#endif
//....
}
本帖子属于以下条目()
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.