Appelez Go fonctions de C

Je suis en train de créer un objet statique écrit en revenir à l'interface avec un programme C (disons, un module de noyau ou de quelque chose).

J'ai trouvé de la documentation sur l'appel de fonctions C de Go, mais je n'ai pas trouvé beaucoup sur la façon d'aller dans l'autre sens. Ce que j'ai trouvé, c'est que c'est possible, mais compliqué.

Voici ce que j'ai trouvé:

Blog à propos des rappels entre C et

Cgo de la documentation

Golang liste de diffusion post

Quelqu'un a une expérience avec cela? En bref, je suis en train de créer un module PAM entièrement écrit en Aller.

  • Vous ne pouvez pas, au moins à partir de fils qui n'ont pas été créés à partir de Aller. J'ai fait rage à propos de ce à de nombreuses reprises, et elle a cessé de développer en Aller jusqu'à ce que ce problème est résolu.
  • J'ai entendu que c'est possible. N'est-il pas la solution?
  • Go utilise une autre convention d'appel et de segmentation des piles. Vous pourriez être en mesure de relier Aller le code compilé avec gccgo avec du code C, mais je n'ai pas essayé car je n'ai pas réussi à gccgo de construire sur mon système.
  • Je vais essayer à l'aide de SWIG maintenant, et je suis plein d'espoir... je n'ai pas rien eu à travailler encore que... ='( j'ai posté sur la liste de diffusion. J'espère que quelqu'un a pitié de moi.
  • Vous pouvez appeler Aller de code C, mais pour le moment vous ne pouvez pas l'incorporer la Aller de l'exécution dans un C app, qui est un élément important, mais subtile différence.
  • Que voulez-vous dire? Je suis totalement ok avec le fait d'avoir Aller courir dans son propre thread, mais je voudrais être en mesure de relier en Passer par du code C comme un objet partagé, et avoir un extérieur C appel de programme de la C wrappers, le C wrappers appel Aller, obtenir un résultat, puis retour à l'origine de la fonction. Je pense que je vais avoir à jouer avec les sockets pour le moment.
  • Ce que je comprends, l'Aller runtime exige que certaines étapes d'initialisation d'un lieu qui n'a pas encore été prélevée dans une fonction que vous pouvez appeler à partir d'un exécutable. Il ya eu une discussion de cette question sur la liste de diffusion, même dans les dernières 24 heures. Mais j'imagine qu'il faudra un certain temps pour obtenir le droit, car vous pourriez potentiellement être polluantes de votre temps d'exécution existants et causant l'instabilité dans votre application hôte. Ça va venir, mais je ne voudrais pas retenir mon souffle.
  • laisse l'haleine, je l'espère, c'est que tôt ou tard, parce que je pense que c'est une des choses qui de prime time.

InformationsquelleAutor beatgammit | 2011-05-25