2017-09-12 3 views
0

J'ai un plugin NSIS personnalisé pour effectuer certaines opérations. Dans le script NSIS, j'ai chargé le plug-in par commande suivante:Impossible de charger le plugin personnalisé dans le script NSIS

!addplugindir "Plugin\" 

(dans le même dossier dans lequel ce script est nsis présent, il y a un dossier appelé « plug-in » dans lequel dll nommé ExDll.dll est présent)

et j'exécute les fonctions de DLL par commande suivante:

ExDll::Func123 "<param1>" "<param2>" 

Après la compilation, l'exécutable est correctement exécuté sans problème. Mais quand je déplace le même exécutable à un autre système, je reçois l'erreur suivante:

Could not load: C:\Users\user123\AppData\Local\Temp\nsw19B5.tmp\ExDll.dll 

J'ai vérifié le répertoire ci-dessus ("C: \ Users \ user123 \ AppData \ Local \ Temp \ nsw19B5.tmp"), DLL "ExDll.dll" est présent.

Donc, je requêtes suivantes:

  1. Quelle peut être la raison possible derrière tout cela?
  2. Comment puis-je résoudre ce problème?

Répondre

0

Il vous manque probablement certaines dépendances. Inspectez votre .DLL avec Dependency Walker sur le système problématique. Vous trouverez probablement que vous liez directement à l'un des fichiers MSVCRT et les fichiers d'exécution VC C++ ne sont pas installés sur ces systèmes.

Vous pouvez modifier votre code afin que vous don't need the CRT (/Zl) ou passer à la liaison statique (/MT).