2010-09-30 5 views
0

J'ai un héritage application C++ en utilisant/clr appeler un dll géré (écrit en C#)#import ADOX conflit avec dll géré en utilisant ADO

L'application utilise #import pour faire référence à ADOX. La DLL fait également référence à ADOX.

Tout va bien jusqu'à ce que j'ajoute une référence à ma DLL au projet C++. Ensuite, je reçois des centaines d'erreurs lors de la compilation STDAFX.CPP liés à msadox.tli et msadox.tlh. Certaines des erreurs se réfèrent à la redéfinition de l'interface et similaires, d'autres à essayer de compiler le tlh et le tli comme s'ils étaient du code managé. J'ai essayé #pragma managed(off) autour du #import sans succès.

Dans le cas où le #import utilise la méthode libid:....

Je ne comprends pas comment ce conflit se produit et ce que je peux faire pour le surmonter. S'il vous plaît aider!

Répondre

0

J'ai contourné le problème en supprimant la référence de dll des références de projet C++ et en utilisant #using "my_managed.dll" dans un seul fichier cpp (le seul qui fait référence à la DLL).

le compilateur m'a averti qu'il était impossible d'importer des symboles ADOX de la dll parce qu'ils avaient déjà été définis (par le #import ...) mais parce qu'ils étaient seulement des avertissements que je pourrais utiliser un #pragma pour les désactiver et les ignorer .

Maintenant tout fonctionne!

Questions connexes