Appel de fonction par l'intermédiaire d'une DLL C (problème d'arguments)
cs_ScRunCHy
Messages postés13Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention21 avril 2009
-
8 avril 2009 à 10:36
cs_ScRunCHy
Messages postés13Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention21 avril 2009
-
8 avril 2009 à 15:25
Bonjour à tous,
J'essaie de développer dans le cadre de mon stage une IHM dans laquelle je dois entre autre afficher des images JPEG2000.
Il faut que j'intègre à un programme C# la librairie OpenJPEG développée en C. Mon problème est le suivant :
J'ai généré une dll à partir des sources de la librairie OpenJPEG que j'ai placée dans le dossier de mon projet. Dans ce même projet (sous Visual Studio 2008) je fais des appels à fonction du type
[DllImport ("OpenJPEG.dll")]
public static extern void Ma_fonction(..);
Pas de problème particulier lorsqu'il s'agit de passer en argument des éléments simples (int, char...), mais comment faire lorsque ces fonctions prennent en entrée des structures définies dans un des".h" de la librairie ???
Par exemple :
opj_j2k_t* j2k_create_decompress(opj_common_ptr cinfo)
qui deviendrait en C# :
[DllImport ("OpenJPEG.dll")]
public static externIntPtr j2k_create_decompress(???)
avec opj_common_ptr défini comme suit dans le .h :
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 8 avril 2009 à 14:13
Salut, tu dois redéfinir la structure dans le fichier C# mais si tu ne connais pas bien P/Invoke ça ne sera pas imple du tout de wrapper ce genre de librairie. Il existe peut être déja un wrapper managé pour OpenJPEG ?
cs_ScRunCHy
Messages postés13Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention21 avril 2009 8 avril 2009 à 15:25
P/Invoke ?? Heu ouai en effet ça ne me dis pas grand chose...^^
Effectivement j'ai cru comprendre qu'il s'agissait d'un problème de code managé/non managé et qu'il fallait le wrapper pour le rendre accessible mais ça risque de ne vraiment pas être facile. Je vais essayer de voir si il existe un wrapper managé pour OpenJPEG mais je n'en suis pas du tout sûr...
Merci !