http://www.picklingtools.com/
il y a une bibliothèque appelée les PicklingTools que j'aider à maintenir ce qui pourrait être utile: il vous permet de former des structures de données en C++ que vous pouvez alors cornichon/unpickle ... il est C++, pas C, mais cela ne devrait pas poser de problème ces derniers temps (en supposant que vous utilisez la suite gcc/g ++). La bibliothèque est une bibliothèque C++ simple (il existe des exemples de C++ et Python dans la distribution montrant comment utiliser la bibliothèque sur des sockets et des fichiers de C++ et Python), mais en général, les bases du décapage vers les fichiers sont disponible.
L'idée de base est que la bibliothèque PicklingTools vous donne des structures de données "python-like" à partir de C++ afin que vous puissiez ensuite sérialiser et désérialiser Python/C++. Tous (?) Les types de base: int, long int, chaîne, None, complexe, dictionnaire, listes, dictionnaires ordonnés et tuples sont supportés. Il y a peu de hooks pour faire des classes personnalisées, mais cette partie est un peu immature: le reste de la librairie est assez stable et a été actif pendant 8 (?) Ans.
Exemple simple:
#include "chooseser.h"
int main()
{
Val a_dict = Tab("{ 'a':1, 'b':[1,2.2,'three'], 'c':None }");
cout << a_dict["b"][0]; // value of 1
// Dump to a file
DumpValToFile(a_dict, "example.p0", SERIALIZE_P0);
// .. from Python, can load the dictionary with pickle.load(file('example.p0'))
// Get the result back
Val result;
LoadValFromFile(result, "example.p0", SERIALIZE_P0);
cout << result << endl;
}
Il y a d'autres documents (FAQ Guide de l'utilisateur) sur le site Web.
Espérons que cela est utile:
Gooday,
Richie
http://www.picklingtools.com/
est portabilité très important pour votre application? –
Pas vraiment, puisque exaile ne fonctionne que sur linux autant que je sache. –