2010-03-23 4 views
1

J'ai une DLL C#, que j'appelle depuis un programme C++ natif. Comme j'utilise l'option du compilateur Qt et/clr ne fonctionnait pas, j'ai suivi le tutoriel this pour un pont. J'ai donc un projet VS2008 (compilé avec/clr), qui lie à la DLL C# et contient la classe bridge et la classe native, qui expose les interfaces à mon programme C++. Un autre projet VS2008 (pas .net stuff) appelle la classe native (liée statiquement).L'application C++ ne parvient pas à s'initialiser (0xc0000005), lors de l'utilisation de la DLL C#

J'ai eu quelques problèmes, mais maintenant le programme compile au moins. Cependant, si j'essaie d'exécuter ce programme, j'obtiens une erreur (0xc0000005) à l'initialisation, lorsque j'essaie d'utiliser la classe native. Comme cela arrive à l'initialisation, je ne vois même pas, ce que les DLL ne parviennent pas à initialiser. Toutes les DLL devraient être au bon endroit.

Des indices? Merci.

+2

'0xC0000005' est une violation d'accès. – sbi

+0

L'option du compilateur ne fonctionnait pas Attention à propos de cette déclaration, il est peu probable qu'elle soit vraie. –

+0

OK, peut-être que "l'option du compilateur n'a pas fonctionné" n'était pas très précise. Plus précisément: j'obtiens des avertissements que __fastcall dans Qt est incompatible avec/clr – Simon

Répondre

3

Le projet, qui a appelé la classe native a été lié statiquement à mon exe et cela n'a pas fonctionné. Je l'ai changé en DLL et maintenant il semble fonctionner.

Je vais enquêter un peu plus.

+0

La conversion du projet en DLL a corrigé le problème, mais je ne suis pas certain de la raison. – Simon

4

J'ai un problème similaire; Qt avec C++ et/clr. J'ai fait une enveloppe pour une classe gérée et fait l'avant avec Qt et je reçois les mises en garde ...

Jetez un oeil à cette discussion sur bytes.com: __fastcall functions in a static lib, cant be called from managed code?

Le gars il dit que statique géré les classes compilées avec /clr sont incompatibles avec fastcall.

Questions connexes