三方语言中调用, Go Energy GUI编译的dll动态链接库CEF

news/2024/7/25 1:47:17/文章来源:https://blog.csdn.net/snxamdf/article/details/139296194

如何在其它编程语言中调用energy编译的dll动态链接库,以使用CEF 或 LCL库

Energy是Go语言基于LCL + CEF开发的跨平台GUI框架, 具有很容易使用CEF 和 LCL控件库 interface 便利

示例链接

正文

为方便起见使用 python 调用 go energy 编译的dll

准备

系统:Windows 10 intel x64
环境

  • python 3.10.10
  • golang 1.19
  • cgo mingw64 12.2.0
  • energy 开发环境

运行

  • 直接使用 示例链接 提供的代码
    以下仅提供部分关键 api 定义。 因CEF具有复杂性, 该示例仅演示可行性

  • export_cef.go
    在dll中初始化CEF环境 initCEFApplication

//export initCEFApplication
func initCEFApplication() {
....
}

在dll中显示创建的CEF浏览器窗口 cefFormShow

//export cefFormShow
func cefFormShow() {
....
}

在dll中关闭并释放掉CEF浏览器窗口 cefFormFree

//export cefFormFree
func cefFormFree() {
....
}
  • 编译提供的示例 > libenergy.dll
    以示例为准,在 cmd 进入目录, 得到 libenergy.dll
    运行Go编译命令 go build -i -ldflags="-s -w" -buildmode=c-shared -o libenergy.dll

  • pyLoadLibenergy.py
    在python环境中导入libenergy.dll库
    python代码比较少,全贴进来了。

import tkinter as tk
from ctypes import cdll, wintypes
import osdef main():root = tk.Tk()root.title("python-load-dll")root.geometry("400x300")current_directory = os.getcwd()libenergyPath = current_directory + "\libenergy.dll"print('libenergyPath: ', libenergyPath)# 加载dll句柄libenergy = cdll.LoadLibrary(libenergyPath)# 获取energy 导出的 apiinitCEFApplication = libenergy.initCEFApplicationcefFormShow = libenergy.cefFormShowcefFormFree = libenergy.cefFormFreeloadLibenergyBtn = tk.Button(root, text="加载libenergy.dll", command=lambda: load_dll_function())loadLibenergyBtn.pack()showWindowBtn = tk.Button(root, text="显示libenergy创建的窗口", command=lambda: show_window_function())showWindowBtn.pack()# 1.先加载dlldef load_dll_function():print('call_dll_function')initCEFApplication()# 2. 显示窗口def show_window_function():print('show_window_function')cefFormShow()def on_closing():print('on_closing')cefFormFree()root.destroy()root.protocol("WM_DELETE_WINDOW", on_closing)# 进入主事件循环root.mainloop()if __name__ == "__main__":main()
  • 在当前目录中执行命令 python pyLoadLibenergy.py

运行效果图

python加载go energy编译的动态链接库dll 使用cef效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1054456.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu server版 虚拟机根目录磁盘扩容

之前一直使用桌面版ubuntu,因为项目原因需要拉取的代码太大了且项目比较多选择了体量更小的Ubuntu server版,在使用中发现根目录的磁盘很快就用满了 如上,明明分配的300G但是/dev/mapper/ubuntu--vg-ubuntu--lv 只有98G都用满了 server版本与桌面版不同的是在server版安装的时…

【python】numpy库计算矩阵特征值和特征向量

目录 0.环境 1.前提 2.全部代码 0.环境 windows eclipse python 1.前提 我的邻接矩阵是固定的,11*11 2.全部代码 要将邻接矩阵使用numpy赋值 #计算矩阵特征值 import numpy as np A np.array([[0,1,1,1,1,1,1,1,1,1,1], [1,0,0,0,0,0,0,0,0,0,0], [1,0,0,0…

9.1 Go语言入门(环境篇)

Go语言入门(环境篇) 目录一、什么是Go语言二、下载安装配置Go语言开发环境1. 下载2. 安装3. 配置环境变量4. 安装环境验证 三、 开发工具1. 下载2. 安装3. 激活4. 配置SDK 四、 创建go工程文件并运行1. 创建go工程2. 示例代码3. 运行代码 目录 一、什么…

AI时代的服装设计师--AIGC

AI时代的服装设计师--AIGC AIGCAIGC设计能替代真正的设计师吗森马T恤设计AIGC优势、优化 本文记录于去年参加的一次森马T恤设计活动的感受。 AIGC 可以说,近期以来,随着ChatGPT的不断发展,从ChatGPT-3到ChatGPT-4的飞速发展,AIGC…

【最优化方法】实验三 无约束最优化方法的MATLAB实现

实验的目的和要求:通过本次实验使学生进一步熟悉掌握使用MATLAB软件,并能利用该软件进行无约束最优化方法的计算。 实验内容: 1、最速下降法的MATLAB实现 2、牛顿法的MATLAB实现 3、共轭梯度法的MATLAB…

电脑如何远程访问?

【天联】的使用场景 电脑远程访问在现代科技的发展中扮演了重要的角色。对于企业和个人用户来说,远程访问的便利性提供了许多机会和可能性。作为一种高效的工具,【天联】具有广泛的应用场景,可以实现异地统一管理、协同办公以及远程数据采集…

Jmeter 安装教程:简单易懂

随着互联网的不断发展,网站和应用程序的性能测试变得越来越重要。Apache JMeter 是一款广泛使用的性能测试工具,它强大且使用广泛,适用于各种性能测试需求。不论你是刚刚接触性能测试的新手,还是一位有经验的测试工程师&#xff0…

从零开始实现自己的串口调试助手(1) - ui界面搭建

UI 界面搭建 ui界面整体演示 ui对象拆分 更多的细节就不方便展开了,下面有提示完成ui设计的提示 在创建工程前 记得把编码改为utf-8 ui设计技巧: ctrl 鼠标左键实现拖动实现复制粘贴 groupBox : 带标题的文本框 栅格布局 -- 只有一个控件的时候会铺满…

4. C++网络编程-TCP客户端的实现

TCP Client网络编程基本步骤 创建socket&#xff0c;指定使用TCP协议使用connect连接服务器使用recv/send接收/发送数据关闭socket TCP-connect连接请求 !man 2 connect #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int connect(int sock…

【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(一)

文章目录 &#x1f680;Linux基础命令⭐1. 查看目录命令&#x1f4a5;2. 切换目录&#x1f44a;3. 创建目录❤️4. 删除目录/文件&#x1f6b2;5. 修改目录/文件&#x1f308;6. 拷贝目录/文件 &#x1f680;Linux基础命令 ⭐1. 查看目录命令 在Linux中&#xff0c;查看目录的…

qt5core.dll怎么下载,qt5core.dll下载安装详细教程

不知道大家有没有遇到过qt5core.dll丢失这个问题&#xff1f;目前这个问题还是比较常见的&#xff0c;一般使用电脑比较多的的人&#xff0c;有很大几率遇到这种qt5core.dll丢失的问题。今天主要针对这个问题&#xff0c;来给大家讲解一下一键修复qt5core.dll的方法。 Qt5Core.…

【Pandas】深入解析`pd.read_json()`函数

【Pandas】深入解析pd.read_json()函数 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#x…

蓝桥杯杨辉三角

PREV-282 杨辉三角形【第十二届】【蓝桥杯省赛】【B组】 &#xff08;二分查找 递推&#xff09;&#xff1a; 解析&#xff1a; 1.杨辉三角具有对称性&#xff1a; 2.杨辉三角具有一定规律 通过观察发现&#xff0c;第一次出现的地方一定在左部靠右的位置&#xff0c;所以从…

在未来你将何去何从?

在数字化的浪潮中&#xff0c;信息技术行业无疑是推动全球经济和社会发展的重要动力。随着科技的不断迭代与进步&#xff0c;云计算、大数据、人工智能&#xff08;AI&#xff09;、物联网&#xff08;IoT&#xff09;、5G通信和区块链等技术已经深入到我们生活的每一个角落&am…

【Unity2D 2022:Particle System】添加粒子特效

一、创建粒子系统游戏物体 1. 创建粒子系统游戏物体Smog Effect 2. 给粒子特效添加精灵贴图 &#xff08;1&#xff09;启用Texture Sheet Animation&#xff08;纹理表动画&#xff09; &#xff08;2&#xff09;点击加号添加一个纹理&#xff0c;并将两张厌恶图片导入到纹理…

Facebook:社交世界的接口

在当今数字时代&#xff0c;社交媒体已经成为了人们生活中不可或缺的一部分&#xff0c;而Facebook作为其中的巨头之一&#xff0c;扮演着至关重要的角色。本文将带您深入探索Facebook这张社交世界的画卷&#xff0c;全面了解这个令人着迷的平台。 起源与历程 Facebook的故事始…

18. CentOS面试题汇总

Java全栈面试题汇总目录-CSDN博客 1. 什么是Linux? Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了…

C# 读取 CSV 文件的方法汇总

文章目录 1. 使用System.IO命名空间中的类2. 处理标题行和指定列3. 使用CsvHelper库4. 高级功能和异常处理5. 使用 LINQ6. 总结 CSV&#xff08;Comma-Separated Values&#xff0c;逗号分隔值&#xff09;文件是一种简单的文本文件格式&#xff0c;用于存储表格数据。在C#中&a…

【C++提高编程-02】----C++泛型编程之类模板实战

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

jupyter notebook更改位置

1.找到jupyer的配置文件 一般在c盘用户的.jupter文件夹下 2. 用记事本打开这个配置文件&#xff0c;定位到c.NotebookApp.notebook_dir /path_to_your_directory 替换你的位置 3.找到jupyer图标的位置&#xff0c;打开属性 添加要存放的位置在目标文件的末尾&#xff0c;重新…