edit forte> (la question entière, c'était trop claire) Je veux utiliser Openssl.net p>
12 Réponses :
La manière du .NET de faire cela consiste à installer votre assemblée dans le Global Cache de montage . P>
chaque ordinateur où le commun L'exécution de la langue est installée a un Code de code machine appelé le Cache de montage global. Le Global Magasins de cache de montage des assemblages spécifiquement désigné à être partagé par plusieurs applications sur le ordinateur. p> blockQuote>
N'y a-t-il pas de manière plus simple? Considérant que je partagerai mes fichiers binaires, ce n'est pas très utile.
Considérant que vous n'êtes pas familier avec .net, je suggère "quand à Rome, faire comme les Romains".
sans regarder votre code exactement, je reçois cette erreur lorsque je: p>
EDIT: Quand tout le reste échoue, essayez Walker de dépendance , car il semble que vos dlls appellent d'autres DLL qui ne sont pas dans votre chemin ni dans le répertoire de l'exécutable. P>
J'ai les DLL dans le chemin de la .exe et la fonction est correcte.
Pour votre édition: je suis sûr que les types sont correctement utilisés. Je n'initialise que l'API en utilisant le code par défaut. Et je passe une machine 32 bits avec des DLL 32 bits.
Dépendance Walker, alors, comme je l'ai ajouté. Ça va probablement vous montrer que vous manquez quelque chose.
Non, la DLL qui me manque est Libey32.dll, que j'ai et que dans le système System32 et le dossier EXE.
À droite, mais vous pouvez obtenir cette exception dllnotfound lorsque LibeaY32.dll appelle une autre dll. Walker de dépendance vous montrera ce qui manque, si quelque chose.
Veuillez relire la question, je l'ai modifiée. Vous remarquerez que libey32.dll n'est pas trouvé, pas une de ses dépendances.
Ah, une erreur de configuration côte à côte est différente. Qu'est-ce que OpenSSL compilé et quel compilateur utilisez-vous? Avez-vous les derniers packs de service pour votre compilateur et pour .net?
Je n'ai commencé que d'obtenir des erreurs côte à côte lorsque j'étais sur Vista ou Windows 7, jamais sur XP. Dans quel système d'exploitation vous développez?
Votre problème est lié à cette question: p>
DLLNOTFoundException, mais DLL est là p>
Vérifiez si toutes les dépencences sont dans le même dossier de votre application ou sont enregistrées. P>
J'ai fait. Toujours ne fonctionne pas. Re-lisez la modification s'il vous plaît, si vous ne l'avez pas fait.
essayez d'utiliser la sondage. Vous devez créer un fichier de configuration XML désigné comme nom d'exécution exécutable de l'application (ou nommé comme l'assemblage qui requiert votre DLL non géré) avec une extension .config. Par exemple. Si vos applications sont nommées myApp.exe, le fichier de configuration sera nommé myApp.exe.config Le fichier de configuration doit être situé dans le même répertoire que l'exécutable / assemblage.
Le fichier de configuration est un simple fichier XML: p> la demande recherchera dans le chemin lors du chargement des assemblages. Le chemin est relatif au fichier de configuration / assemblage. P> Je ne sais pas si cela fonctionnera pour les DLL non gérées, mais vaut la peine d'essayer. P> P>
En dernier recours, si rien d'autre ne fonctionne: p>
Il peut être utile de savoir où l'application (.NET ou non) recherche les DLL. Il suffit d'utiliser moniteur de processus et filtrer pour le nom de fichier de la DLL. Puis copiez-le dans un endroit où l'application la recherche. P>
Vous manquez probablement les redistributables VC ++. Je suppose que OpenSSL.net est uniquement x86, vous pouvez donc Sinon, si ce sont des constructions de débogage (vous verrez Microsoft.vc90.debugcrt dans EventViewer ou les journaux SxStrace), vous aurez besoin de: P>
Essayez la dernière version de openssl.net ( 0.4.1 ) qui devrait maintenant inclure des fichiers binaires liboyons32.dll et ssleayy32.dll et ssleay32.dll qui pointent sur le CRT statique. Sinon, vous pouvez construire ces bibliothèques vous-même ou utiliser une construction 'officielle' à partir d'openssl.org. P>
J'ai trouvé une solution. P>
Malheureusement, le package redistribuable VS2008 C ++ n'a pas fonctionné - j'ai dû installer la version SP1 et VC ++ 2008. L'auteur a déclaré dans un commentaire sur son site Web qu'il s'agissait d'une erreur de son côté et non de la mienne. Il recompisse actuellement les DLL pour être lié statilement. Merci à tous ceux qui m'ont aidé :) p>
Essayez de changer la cible de la plate-forme pour votre projet à X86 au lieu de "Toute processeur". p>
Pour toute personne d'autre, il y a toujours eu cette question (et a vérifié que les conditions préalables nécessaires existent dans leurs bons emplacements: p>
vérifier le documentation d'installation openssl.net et assurez-vous que ses prérequis sont installés. < / Fort> Dans mon cas, un utilisateur manquait le Microsoft Visual C ++ Package redistribuable 2010 (x86) dépendance appelée dans la documentation OpenSSL.NET. P>
Dans mon cas, lorsque nous développons un site Web avec Open SSL sur les plates-formes X64 Win 2008, nous devons vérifier au pool d'applications: Autoriser 32 applications: True P>
p>
Créer un nouveau dossier nommé X86 dans votre chemin d'application, puis mettre libey32.dll, ssleay32.dll dans le dossier X86. P>
BTW, C # ne recherche pas de dlls - .NET fait.
Votre système est-il 64 bits? Et plus important encore, votre application .NET AnyCPU ou X86?
Mon système est 32 bits et je ne sais pas comment vérifier l'autre paramètre.
Avez-vous essayé d'exécuter l'outil SxStrace.exe comme suggéré dans le message d'erreur?