Maison  >  Article  >  développement back-end  >  Je ne peux pas utiliser la bibliothèque partagée Go dans mon fichier Python

Je ne peux pas utiliser la bibliothèque partagée Go dans mon fichier Python

WBOY
WBOYavant
2024-02-09 08:00:21540parcourir

无法在我的 python 文件中使用 go 共享库

Bonjour, éditeur php Xiaoxin, récemment un lecteur a rencontré un problème lors de l'utilisation de fichiers python. Il n'a pas pu utiliser la bibliothèque partagée go dans ses fichiers python. Ce problème peut être dû à des problèmes de configuration ou d'environnement. Avant de résoudre ce problème, vous pouvez essayer de vérifier vos variables d'environnement et vos paramètres de chemin pour vous assurer que votre bibliothèque partagée go est correctement installée et que le chemin est correctement défini. Vous pouvez également essayer de réinstaller ou de mettre à jour votre bibliothèque partagée Go pour vous assurer qu'elle est compatible avec votre version de Python. Si le problème persiste, vous pouvez envisager de demander de l'aide à la communauté de développement ou au forum concerné, où d'autres développeurs peuvent avoir rencontré des problèmes similaires et peuvent proposer des solutions. J'espère que ces informations vous seront utiles !

Contenu de la question

J'ai une fonction appelée main.go 的文件,它定义了一个名为 test. Je veux pouvoir appeler cette fonction depuis mon script python.

main.go

package main

import "C"

// export test
func test() int {
    return 1
}

func main() {}

Compiler : go build -o lib.so -buildmode=c-shared main.go

main.py

import ctypes

mylib = ctypes.CDLL("./lib.so")


result = mylib.test()


print(result)

Lorsque j'exécute le programme python, j'obtiens l'erreur suivante : AttributeError:./lib.so:未定义符号:test

Qu'est-ce que j'ai raté ?

Version Go go版本go1.21.3 linux/amd64

Version Python : Python 3.10.12

J'ai essayé de mettre à jour Go (auparavant ma version était 1.21.1)

Solution de contournement

Tout est correct sauf //export Avoir un espace supplémentaire posait des problèmes

package main

import "C"

//export test      <------ remove the extra space here
func test() int {
    return 1
}

func main() {}
python main.py

Sortie :

1

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer