2012-11-10 4 views
1

Je viens de télécharger FreeImage 3.15.4 Win32 et j'essaie de passer par leurs échantillons C#. J'ai une machine Windows 7 64 bits avec Visual Studio Express 2010, donc j'ai recompilé les échantillons en 64 bits comme décrit ici (http://www.sambeauvois.be/blog/2010/05/freeimage-and-x64-projects-yes-you-can /). J'ai également dû changer le nom de la chaîne "FreeImageLibrary" dans FreeImageStaticImports.cs afin de démarrer les exemples d'applications (la DLL produite s'appelait FreeImageNet et non FreeImage comme les exemples attendus).Impossible de trouver un point d'entrée nommé 'FreeImage_GetFileTypeU' dans la DLL 'FreeImageNET'

Cependant quand je cours les échantillons, je reçois un "Impossible de trouver un point d'entrée nommé 'FreeImage_GetFileTypeU' dans DLL 'FreeImageNET'." erreur chaque fois que j'appelle une fonction FreeImage. Les exemples référencent la bibliothèque qui contient les instructions DLLImport, donc je ne suis pas vraiment sûr de ce qui est cassé ici. Est-ce que quelqu'un a de l'expérience avec FreeImage et C# qui pourrait offrir quelques conseils? Merci!

Répondre

0

Je devais aussi changer le nom de la chaîne « FreeImageLibrary »

Voilà comment vous avez dans ce problème. Il y a deux DLL impliquées ici. FreeImage.dll est le natif DLL, il contient l'exportation FreeImage_GetFileTypeU. FreeImageNET.dll est la bibliothèque gérée qui contient les wrappers pour la DLL native, elle n'a pas cette exportation comme le message d'exception vous l'a dit.

Ce que vous auriez dû faire était de reconstruire la DLL native à partir de la source afin que vous obteniez la version 64 bits de FreeImage.dll. Cet article de blog vous a dit comment faire cela. Et offert un téléchargement, ymmv.

Il doit également être copié dans le dossier de sortie de construction afin qu'il puisse être trouvé au moment de l'exécution. Un moyen facile de le faire est de l'ajouter à votre projet avec Project + Add Existing Item et de définir sa propriété "Copy to Output Directory" sur "Copy if newer".

+0

Je ne savais clairement pas ce que je faisais. J'ai effectivement converti les exemples de projets en x64, pas la DLL native FreeImage. Malheureusement, je ne peux pas sembler reconstruire cette DLL suivant les directions mêmes que j'ai liées. Aucune des solutions ne convertit avec Visual Studio Express 2010. J'ai essayé d'utiliser le téléchargement proposé, mais cela ne semble pas fonctionner. Grâce à votre aide, j'obtiens les DLL aux bons emplacements, je n'arrive pas à les faire fonctionner. :( – GrandAdmiral

+1

N'essayez pas cela avec Express, changez simplement la plate-forme cible de votre projet C# en x86 pour pouvoir utiliser la distribution normale, ce qui est difficile à faire avec l'édition Express, vous devez éditer le Changez "AnyCPU" en "x86" Le logiciel libre n'est gratuit que si votre temps est libre –

+0

Sur la base de vos conseils, je suis retourné aux bibliothèques 32 bits et j'ai réussi à faire fonctionner les exemples. – GrandAdmiral

Questions connexes