Jump to Navigation

另一种qt绑定到c, go语言的方式

这种方法,主要是解决编译速度问题,编译占用内存资源大的问题。

这是与现在therecipe/qt和go-qt绑定相比的,当前这种方式,编译过程时需要实时编译很多的C++代码,并且链接Qt5的库,所以特别慢,并且占用内存多,完全把go的编译速度优势丢失了。

这种新的方式,是使用libffi直接加载.so,而不是链接的方式编译,所以go binding编译时的速度会加快。在最近的实现版本中,qt5 for go binding的代码中已经完全不包含C/C++代码,不需要在.go文件引入cgo,编译过程达到原生go的速度。

基本测试,编译therecipe/qt的基本包,需要30分钟以上,最大使用内存达到3G。而编译该绑定的go库,只需要不到10分钟,内存占用最大1G。两者皆是原来的1/3,效果明显。特别是在使用go绑定做实际开发过程中,节省的编译时间也大大减少。同时最终编译得到的文件大小同样也会小很多。

源代码: https://github.com/kitech/qt.go/

实现细节描述全文传送门(未整理版本):https://www.evernote.com/shard/s597/sh/a65d27ce-bc85-431d-843e-16e47a6ef...

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.


Main menu 2

Story | by Dr. Radut