当前位置: 首页 > 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'
http://www.lryc.cn/news/308639.html

相关文章:

  • css浮动
  • 小程序怎么开发?怎么开发自己的小程序
  • Unity(第十八部)物理力学,碰撞,触发、关节和材质
  • 内网搭建mysql8.0并搭建主从复制详细教程!!!
  • MYSQL 解释器小记
  • 具身智能计算系统,机器人时代的 Android | 新程序员
  • win11开启IPV6并手动设置地址
  • WPF中如何设置自定义控件
  • 【Leetcode每日一题】二分查找 - 寻找旋转排序数组中的最小值(难度⭐⭐)(22)
  • QT C++实战:实现用户登录页面及多个界面跳转
  • 我的世界游戏服务器平台推荐哪里找?
  • 用于制作耳机壳的倒模专用UV树脂有什么特点?
  • 将c、c++变为python
  • golang学习7,glang的web的restful接口结构体传参
  • python模型训练
  • 逆向案例三:动态xhr包中AES解密的一般步骤,以精灵数据为例
  • 超越CPU和GPU:引领AI进化的LPU
  • MySQL 逗号分隔查询--find_in_set()函数
  • 【物联网应用案例】智能农业的 9 个技术用例
  • 前端开发——ElementUI组件的使用
  • Unity编写Shader内置各种矩阵和方法介绍
  • 初学者如何使用QT新建一个包含UI界面的C++项目
  • 韦东山嵌入式Liunx入门驱动开发四
  • ubuntu基础操作(1)-个人笔记
  • Spring Cloud2022之OpenFeign使用以及部分源码分析
  • 【非比较排序】计算排序算法
  • 数据结构与算法 - 数组与二分查找 + Leetcode典型题
  • SQL进阶(三):Join 小技巧:提升数据的处理速度
  • 开发知识点-.netC#图形用户界面开发之WPF
  • 基于springboot实现流浪动物救助网站系统项目【项目源码+论文说明】