2010-06-14 7 views
0

J'essaie de pinping à une fonction de fouillis.pinvoke à la fonction de fouillis

La fonction est définie dans la documentation comme

ClutterActor * clutter_texture_new_from_file (const gchar *filename, GError **error); 

Le code que j'ai est la suivante:

[DllImport ("libclutter-glx-1.0.so.0")] 
private static extern IntPtr clutter_texture_new_from_file (string filename, IntPtr errorData); 

Et je l'appelle comme ceci:

IntPtr texture = clutter_texture_new_from_file("myImage.jpeg",IntPtr.Zero); 

Cependant, lorsque appelé comme ceci dans monodevelop sur Ubuntu, je reçois l'erreur suivante.

Unix Transport Error 

eventally Je voudrais obtenir le rapport d'erreurs de travail afin que je puisse obtenir le résultat GError mais tout d'abord je dois passer l'erreur Transport Unix.

+0

Pour commencer - l'appel fonctionne-t-il à partir du niveau C? S'il signale la même erreur, cela signifie que le problème est avec les paramètres d'appel/X et non P/Invoce. Deuxièmement - est-il marshal avec un codage correct (par exemple - pas en UTF-16)? –

Répondre

1

Le paramètre errorData doit être marqué comme "ref IntPtr", bien que je ne pense pas que cela devrait causer cette erreur puisque ce paramètre devrait être autorisé à être NULL. Sinon, essayez de l'exécuter en dehors de Monodevelop. Ce type d'erreur peut être le résultat d'une erreur de segmentation ailleurs dans votre programme.

Questions connexes