2010-05-28 5 views
1

Je veux utiliser en C# ces méthodes:.dll pour charger les données du fichier en code C#

*  int LibRaw::open_datastream(LibRaw_abstract_datastream *stream) 
*  int LibRaw::open_file(const char *rawfile) 
*  int LibRaw::open_buffer(void *buffer, size_t bufsize) 
*  int LibRaw::unpack(void) 
*  int LibRaw::unpack_thumb(void) 

qui sont stockés dans un libraw.dll. Ces fonctions un par un charger des données à partir du fichier ... J'ai lu sur P/Invoke mais je ne suis pas sûr de savoir comment les invoquer. Quelqu'un peut-il me montrer un exemple comment utiliser toutes ces fonctions ensemble en C# pour charger le fichier (image brute stockée dans le dossier) ou juste comment PIvoke l'un d'entre eux.

Merci!

p.s. peut-être cela peut être utile: http://www.libraw.org/

Répondre

1

Où je travaille, nous avons constaté que la meilleure façon de le faire est d'écrire du code de retour en C++/CLI. Je pensais que j'avais un bon article sur ce processus, mais apparemment pas. J'ai deux articles plus courts, un sur la façon de travailler avec unmanaged static libraries et un sur how to wrap libraries (en C++ géré par opposition à C++/CLI). La solution est similaire - juste que vous devez lier à une bibliothèque de souche qui charge la DLL ou charger la DLL vous-même et appelez GetProcAddress pour obtenir la routine que vous envelopper.

L'avantage est que vous pouvez appeler du code non géré directement à partir de C++/CLI et pouvez contrôler quand et comment le rassemblement se produit. L'inconvénient est que vous écrivez en C++ et que vous devez contrôler quand se déroule le rassemblement.