Maison > développement back-end > Golang > le corps du texte

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

WBOY
Libérer: 2024-02-09 08:00:21
avant
544 Les gens l'ont consulté

无法在我的 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() {}
Copier après la connexion

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)
Copier après la connexion

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() {}
Copier après la connexion
python main.py
Copier après la connexion

Sortie :

1
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal