当前位置: 首页 > news >正文

Go编译DLL与SO

1. 简介

将Go编译成DLL/SO供其他语言调用。

  • .DLL:文件是 Windows 操作系统的动态链接库文件。
  • .SO 文件是 Unix、Linux 和其他类 Unix 系统的共享库文件。

2. Go编译DLL/SO

注意

  1. export后面导出的方法名一定要大写。
package main/*
#include <stdlib.h>
*/
import "C"
import "strings"//export Sum
func Sum(a, b C.int) C.int {return a + b
}//export ToLower
func ToLower(c *C.char) *C.char {s := C.GoString(c)return C.CString(strings.ToLower(s))
}func main() {
}

编译成SO

go build -buildmode=c-shared -o example.so

编译成DLL

go build -buildmode=c-shared -o example.dll

3. Python调用DLL/SO

调用SO

import ctypes
from ctypes import cdllexample = cdll.LoadLibrary('./example.so')
print(example.Sum(1, 2))  # 3to_lower = example.ToLower
to_lower.argtypes = [ctypes.c_char_p]
to_lower.restype = ctypes.c_char_p
print(to_lower(b'HELLO WORLD'))  # b'hello world'

调用DLL(未测试)

import ctypesexample = ctypes.CDLL("./example.so")print(example.Sum(1, 2))  # 3to_lower = example.ToLower
to_lower.argtypes = [ctypes.c_char_p]
to_lower.restype = ctypes.c_char_p
print(to_lower(b'HELLO WORLD'))  # b'hello world'

相关文章:

Go编译DLL与SO

1. 简介 将Go编译成DLL/SO供其他语言调用。 .DLL&#xff1a;文件是 Windows 操作系统的动态链接库文件。.SO 文件是 Unix、Linux 和其他类 Unix 系统的共享库文件。 2. Go编译DLL/SO 注意 export后面导出的方法名一定要大写。 package main/* #include <stdlib.h>…...

css浮动

标准流&#xff1a;也叫文档流&#xff0c;指的是标签在页面中默认的排布规则。 浮动&#xff1a;让块级元素水平排列&#xff08;float:left/right;&#xff09;。 特点&#xff1a;浮动后的盒子顶对齐&#xff1b; 浮动后的盒子具备行内块的特点&#xff1b; 浮动后的元素脱…...

小程序怎么开发?怎么开发自己的小程序

一、明确需求与定位 在开发小程序之前&#xff0c;需要明确需求. 首先&#xff0c;明确小程序的定位非常重要。我们需要确定小程序是为了提供便捷的购物体验还是特定领域的服务。明确定位可以帮助我们更好地设计和优化小程序的功能&#xff0c;以符合用户的期望和需求。 其次…...

Unity(第十八部)物理力学,碰撞,触发、关节和材质

1、重力 刚体组件 英文中文描述RigidBody刚体组件physics->rigidbody &#xff0c;刚体组件使一个物体有了质量&#xff0c;重力等。&#xff0c;use gravity 勾选后&#xff0c;物体才会受到重力&#xff0c;会自动下落&#xff0c;取消勾选就不会。&#xff0c;&#xf…...

内网搭建mysql8.0并搭建主从复制详细教程!!!

一、安装mysql 1.1 mysql下载链接&#xff1a; https://downloads.mysql.com/archives/community/ 1.2 解压包并创建相应的数据目录 tar -xvf mysql-8.2.0-linux-glibc2.28-x86_64.tar.xz -C /usr/local cd /usr/local/ mv mysql-8.2.0-linux-glibc2.28-x86_64/ mysql mkdir…...

MYSQL 解释器小记

解释器的结果通常通过上述表格展示&#xff1a; 1. select_type 表示查询的类型 simple: 表示简单的选择查询&#xff0c;没有子查询或连接操作 primary:表示主查询&#xff0c;通常是最外层的查询 subquery :表示子查询&#xff0c;在主查询中嵌套的查询 derived: 表示派…...

具身智能计算系统,机器人时代的 Android | 新程序员

【导读】具身智能作为一种新兴的研究视角和方法论&#xff0c;正在刷新我们对智能本质及其发展的理解&#xff1a;传统的 AI 模型往往将智能视为一种独立于实体存在的抽象能力&#xff0c;而具身智能则主张智能是实体与其环境持续互动的结果。 本文深度剖析了具身智能计算系统…...

win11开启IPV6并手动设置地址

win11开启IPV6并手动设置地址 ipv6手动设置 假设你想要配置的IPv6地址是2001:0db8:85a3:0000:0000:8a2e:0370:7334&#xff0c;子网前缀长度为64位&#xff0c;并且默认网关是2001:0db8:85a3::1。 手动配置IPv6地址的示例步骤&#xff08;Windows操作系统&#xff09;&#x…...

WPF中如何设置自定义控件

1.圆角按钮的设置&#xff1a; 众所周知在WPF中自带有提示信息&#xff0c;当我问创建Button时&#xff0c;点击空格出现如下可选设置 带有小扳手&#x1f527;图标为相应的属性&#xff0c;如果Button有CornerRadius&#xff08;角半径&#xff09;属性就能够直接设置Button实…...

【Leetcode每日一题】二分查找 - 寻找旋转排序数组中的最小值(难度⭐⭐)(22)

1. 题目解析 Leetcode链接&#xff1a;153. 寻找旋转排序数组中的最小值 这个题目乍一看很长很复杂&#xff0c;又是旋转数组又是最小值的 但是仔细想想&#xff0c;结合题目给的示例&#xff0c;不难看出可以用二分的方法来解决 核心在于找到给定数组里面的最小值 2. 算法原…...

QT C++实战:实现用户登录页面及多个界面跳转

主要思路 一个登录界面&#xff0c;以管理员Or普通用户登录管理员&#xff1a;一个管理员的操作界面&#xff0c;可以把数据录入到数据库中。有返回登陆按钮&#xff0c;可以选择重新登陆&#xff08;管理员Or普通用户普通用户&#xff1a;一个主界面&#xff0c;负责展示视频…...

我的世界游戏服务器平台推荐哪里找?

我的世界服务器可以在多个平台上租赁&#xff0c;以下是一些推荐的游戏服务器平台。 1.玩家可以通过互联网上的一些平台租用游戏服务器。其中&#xff0c;国内大厂平台有阿里云、腾讯云、华为云等。这些平台提供了丰富的服务器配置和带宽选择&#xff0c;玩家可以根据自己的需求…...

用于制作耳机壳的倒模专用UV树脂有什么特点?

制作耳机壳的UV树脂耳机壳UV胶具有以下特点&#xff1a; 快速固化&#xff1a;UV树脂可以在紫外线的照射下迅速固化&#xff0c;大大缩短了制作时间。高硬度与高耐磨性&#xff1a;UV树脂具有较高的硬度和耐磨性&#xff0c;能够提供良好的保护效果。透明度高&#xff1a;UV树…...

将c、c++变为python

1.编写cpp文件 #include "pycpp.h" #include <iostream>using namespace std;PyCpp::PyCpp(){}void PyCpp::sayHello(int a){cout << "Hello Python, I am C."<<a << endl; }2.编写头文件&#xff08;声明变量&#xff09; clas…...

golang学习7,glang的web的restful接口结构体传参

接口&#xff1a; //POST请求 返回json 接口传参json r.POST("/postJson", controller.PostUserInfo) 1.定义结构体 //定义结构体 type Search struct {Id intName string }2.结构体传参 //结构体传参 func PostUserInfo(c *gin.Context) {search : &Searc…...

python模型训练

目录 1、新建模型 train_model.py 2、运行模型 &#xff08;1&#xff09;首先会下载data文件库 &#xff08;2&#xff09;完成之后会开始训练模型&#xff08;10次&#xff09; 3、 训练好之后&#xff0c;进入命令集 4、输入命令&#xff1a;python -m tensorboard.ma…...

逆向案例三:动态xhr包中AES解密的一般步骤,以精灵数据为例

补充知识&#xff1a;进行AES解密需要知道四个关键字&#xff0c;即密钥key,向量iv,模式mode,填充方式pad 一般网页AES都是16位的&#xff0c;m3u8视频加密一般是AES-128格式 网页链接:https://www.jinglingshuju.com/articles 进行抓包结果返回的是密文&#xff1a; 一般思…...

超越CPU和GPU:引领AI进化的LPU

什么是CPU CPU&#xff08;Central Processing Unit&#xff09;是由数十亿个晶体管构成的&#xff0c;可以拥有多个处理核心&#xff0c;通常被称为计算机的“大脑”。它对所有现代计算系统至关重要&#xff0c;因为它执行计算机和操作系统所需的命令和进程。CPU在决定程序运…...

MySQL 逗号分隔查询--find_in_set()函数

业务场景&#xff1a; 在使用MySQL的时候&#xff0c;可能的某个字段存储的是一个英文逗号分割的字符串&#xff08;这里我们不讨论表设计的合理性&#xff09;&#xff0c;如图所示&#xff1a; 我们在查询的时候需要匹配逗号分割中的某个字符串&#xff0c;该怎么查询呢&am…...

【物联网应用案例】智能农业的 9 个技术用例

一、农业中的物联网用例 一般而言&#xff0c;农业物联网传感器以及农业物联网应用有多种类型&#xff1a; 1. 气候条件监测 气象站无疑是当今智能农业领域最受欢迎的设备。这款设备集成了多种智能农业传感器&#xff0c;能够在现场对各类数据进行收集&#xff0c;然后迅速将…...

DAMO-YOLO手机检测系统健康检查脚本:curl+shell自动化巡检

DAMO-YOLO手机检测系统健康检查脚本&#xff1a;curlshell自动化巡检 1. 项目背景与需求 在实际生产环境中&#xff0c;手机检测系统的稳定运行至关重要。这个基于DAMO-YOLO和TinyNAS技术的检测系统虽然具有"小、快、省"的特点&#xff0c;专门适配手机端低算力、低…...

phpfastcache配置详解:掌握所有配置选项的高级用法

phpfastcache配置详解&#xff1a;掌握所有配置选项的高级用法 【免费下载链接】phpfastcache A high-performance backend cache system. It is intended for use in speeding up dynamic web applications by alleviating database load. Well implemented, it can drops the…...

测试左移与右移平衡:工作流优化

在快速迭代的软件交付环境中&#xff0c;测试左移&#xff08;Shift-Left Testing&#xff09;和测试右移&#xff08;Shift-Right Testing&#xff09;已成为提升质量与效率的核心策略。测试左移强调在开发生命周期早期介入测试&#xff0c;而测试右移聚焦于生产环境的持续验证…...

**发散创新:基于Go语言实现可观测标准的微服务链路追踪系统**在现代分布式架构中,**可观测性(Observability)** 已

发散创新&#xff1a;基于Go语言实现可观测标准的微服务链路追踪系统 在现代分布式架构中&#xff0c;可观测性&#xff08;Observability&#xff09; 已成为保障系统稳定运行的核心能力之一。传统的日志和监控手段已难以满足复杂调用链路下的问题定位需求&#xff0c;而 链路…...

STM32 FatFS连续写入SD卡数据丢失?3个常见坑点与实战修复方案

STM32 FatFS连续写入SD卡数据丢失&#xff1f;3个常见坑点与实战修复方案 最近在调试STM32的SD卡数据记录功能时&#xff0c;遇到了一个让人头疼的问题&#xff1a;使用FatFS库连续写入数据时&#xff0c;SD卡中的文件要么是空的&#xff0c;要么全是乱码。经过一番折腾&#x…...

W-TRS-5.5D7红外测温传感器:电饭煲智能化测温的革新力量

在健康饮食与智能烹饪需求日益增长&#xff0c;电饭煲作为厨房的核心设备之一&#xff0c;其测温技术的革新直接关系到米饭的口感、营养保留以及特殊饮食需求的满足。W-TRS-5.5D7红外测温传感器的出现&#xff0c;以非接触式测温技术为核心&#xff0c;结合定制化算法实现智能化…...

告别卡顿!用PaddleSeg的PP-LiteSeg模型在边缘设备上实现实时语义分割(附保姆级部署教程)

边缘设备实时语义分割实战&#xff1a;PP-LiteSeg部署全指南与性能优化 在智能摄像头、移动机器人和工业质检等边缘计算场景中&#xff0c;实时语义分割技术正成为关键突破口。传统分割模型往往需要强大的GPU支持&#xff0c;而边缘设备如Jetson Nano、树莓派甚至智能手机的算力…...

Spring Boot 自动装配加载过程的性能分析

Spring Boot 自动装配加载过程的性能分析 Spring Boot 的自动装配&#xff08;Auto-Configuration&#xff09;是其核心特性之一&#xff0c;它通过约定优于配置的原则&#xff0c;大幅简化了应用的开发与部署。随着项目规模的扩大&#xff0c;自动装配的加载过程可能成为性能…...

深度学习 —— Pytorch

目录 一、张量和numpy 转换 二、张量运算 三、张量的索引 四、张量的计算函数 五、张量 形状改变 六、张量的拼接 一、张量和numpy 转换 关键&#xff1a; 1.t0.numpy().copy() 不共享内存 2.ndarray -> 共享内存 3.张量 -> 标量 &#xff08;只支持一个元素&…...

ViGEmBus深度解析:Windows内核级游戏控制器虚拟化架构揭秘

ViGEmBus深度解析&#xff1a;Windows内核级游戏控制器虚拟化架构揭秘 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 在游戏输入设备兼容性领域&#xff0c…...