Comment utiliser une DLL C ++ dans l’application XAML App pour Windows Phone 8.1 dans le composant d’exécution C ++

Je souhaite utiliser une DLL C ++ (compilée pour arm, x86) dans mon projet de studio visuel XAML 8.1 pour Windows Phone 8.1.

J’ai créé un composant d’exécution C ++ pour interagir avec mon code C ++. Ce code nécessite une DLL précompilée. J’ai ajouté mon fichier lib aux parameters de mon projet. La compilation fonctionne bien. Si je lance mon application avec l’émulateur Windows Phone 8.1, je reçois:

The specified module could not be found. (Exception from HRESULT: 0x8007007E) 

Ma structure de projet Visual Studio:

  • c #
    • Projet Windows Phone
    • Projet Windows
    • XAML partagé
  • C ++ géré
    • RuntimeComponent Windows Phone
    • Windows RuntimeComponent
    • Code C ++ partagé (dll utilisée ici)

entrez la description de l'image ici

Choses que j’ai essayées:

  • J’ai glissé et déposé la dll dans mon projet C ++ et modifié les propriétés du contenu en true.
  • J’ai glissé et déposé la dll dans mon projet C # et activé l’option de copier la dll dans le répertoire de sortie

Alors, comment utiliser une bibliothèque .lib / .dll dans un projet de composant d’exécution C ++?

Quelques détails supplémentaires:

  • Je souhaite utiliser Angle (qui permet d’exécuter le code OpenGL en tant que DirectX sous Windows / Windows Phone avec le fork de Microsoft: https://github.com/MSOpenTech/angle/tree/future-dev )
  • Des modèles fournis pour Windows Phone 8.1 pour C ++ pur sont basés sur libEGL.lib / dll et libGLES.lib / dll (compilés manuellement pour arm, win32)
  • Mais je souhaite utiliser un projet C # avec C ++ Runntime Component pour pouvoir utiliser des bibliothèques tierces telles que le cadre publicitaire admob pour Windows Phone.
  • J’ai découvert que cocos2d utilisait Angle mais je n’ai pas trouvé comment ils l’avaient fait ( https://github.com/cocos2d/cocos2d-x/tree/v3/templates/cpp-template-default/proj.wp8-xaml )

J’ai réussi à le faire fonctionner.

Vous devez importer la dll dans le projet C #. Il est important que la dll soit à la racine du projet C # et que: copy to output directory ne soit pas activé.