2010-05-28 4 views
0

J'ai une DLL C++ qui importe un fichier .tlb généré dans un projet C#. La DLL C++ est une DLL wrapper contenant des fonctions qui appellent les fonctions C# correspondantes.Génération de fichiers .tlb dans Windows 7 Pro 32 bits

Lorsque j'appelle les fonctions C++ sur l'ordinateur sur lequel j'ai construit les projets, tout fonctionne bien. Mais quand je copie les tlb de DLL et générés à un autre ordinateur avec la même version exacte de Windows et les programmes installés et j'appelle les fonctions de C++, il casse avec une erreur COM. Cependant, après avoir recompilé les projets sur le nouvel ordinateur, tout fonctionne à nouveau.

J'ai déjà vérifié le "travail sur tous les ordinateurs" pour les deux projets, mais cela continue de se produire. Quoi d'autre dois-je faire pour que les DLL fonctionnent sur tous les ordinateurs?

Répondre

2

Le HRESULT que vous obtenez serait crucial pour diagnostiquer cela. Forcé de deviner: avez-vous exécuté Regasm.exe sur cette machine? Obligatoire pour créer les entrées de registre nécessaires afin que COM puisse trouver le serveur. C'est automatique quand vous construisez dans l'EDI.

+0

Je vais essayer de le faire encore une fois. J'en informerai demain. Merci pour la réponse rapide! –

+0

En ce qui concerne HRESULT, je ne sais pas comment voir cette cause. J'utilise d'abord un projet python pour appeler les fonctions C++. Comment puis-je faire pour voir le HRESULT? –

+0

Vous devrez utiliser un débogueur C++ si vous n'obtenez pas un diagnostic correct. Si ma conjecture est bonne alors elle n'échouera pas demain. –

Questions connexes