登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: [cairo/skija]glib 2.36之前版本需要调用 g_type_init     [回主站]     [分站链接]
[cairo/skija]glib 2.36之前版本需要调用 g_type_init
clq
浏览(333) - 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

//....

}




总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录
canvas 更多
cairo 更多
skija 更多
控制台 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1