2017-09-05 2 views
1

J'utilise C++ pour construire xll plugins pour Excel, avec l'aide de xlw. Il fonctionne très bien sur mon PC et certains utilisateurs, mais dans d'autres utilisateurs, quand je fais glisser XLL dans une nouvelle fenêtre Excel, l'erreur apparaît:Strange excel xll plugin erreur

Le fichier que vous essayez d'ouvrir, « my_plug_in. xll ', est dans un différent que spécifié par l'extension de fichier. Vérifiez que le fichier est non corrompu et provient d'une source fiable avant d'ouvrir le fichier. Est-ce que vous voulez ouvrir le fichier maintenant?

Si oui, cliquez, Excel ouvrira XLL comme un fichier texte montrant quelque chose comme

"MZÿÿ¸ @ Í! Lî! Ce programme ne peut pas être exécuté en mode DOS."

à la première rangée. Ce n'est pas prévu.

Quelle pourrait être la raison? Le système d'exploitation sont tous windows 7 professionnels, 64 bits, Excel sont tous Excel 2010 (32 bits).

+0

une DLL externe manquante ou une DLL d'exécution? avez-vous construit avec le drapeau MT? pouvez-vous vérifier avec dépendance dll? Aussi, vous avez besoin d'un x86 xll pour Excel 32 bits et un x64 xll pour Excel 64 bits. – Malick

+0

Je l'ai trouvé que j'ai construit sous MT mais par erreur lié à une lib destinée à être utilisée dans MD. Mais pourquoi certains utilisateurs peuvent l'utiliser certains ne peuvent pas? – athos

+1

Ok, je pense que pour les utilisateurs pour lesquels cela fonctionne, ils doivent avoir la lib installée par un autre logiciel. – Malick

Répondre

1

Pour résumer, le code d'erreur: « Ce programme ne peut pas être exécuté en mode DOS » est généralement liée à un de ces problèmes:

  • XLL est construit avec le/MD drapeau, mais les utilisateurs finaux faire ne pas avoir la DLL CRT requise.
  • mauvaise architecture de la xll (ex: x64 xll pour Excel 32 bits).
  • une DLL externe manquante.
  • une DLL externe qui a été créée avec l'indicateur/MD. Dans ce cas, si les utilisateurs finaux ont la version correcte du CRT (celui qui a été utilisé pour construire cette DLL externe), il n'y a pas de problème. Sinon, ça ne marchera pas. Je pense que c'est votre cas. Je vous recommande fortement de reconstruire votre DLL externe (si possible) avec l'indicateur/MT, ou mieux de lier directement votre xll avec le static fichier .lib du composant tiers.