Bonjour,
je travaille sur un projet dont l'architecture est la suivante:
- un gros programme en c++ natif compil� sous forme de lib statique
- un wrapper c++/cli qui wrappe une classe et quelques fonction membre d'une classe de la lib c++
- un programme de test en c# qui utilise le wrapper c++/cli
le probl�me c'est que ce projet a �t� fait � l'aide de la technique du "doigt mouill�" (voyons vois si je modifie cette option ce que �a donne) et ce wrapper tombe en marche parfois, mais sur la plupart des plateformes, il crashe brutalement.
J'ai donc tout repris, unifi� les options de compilations (plateforme, configuration, charset, framework, ...). La dll en c++ natif semble nickel car je l'ai test� � l'aide d'un ex�cutable en c++ natif et �a marche parfaitement.
Mais par contre je rencontre d'�tranges probl�mes avec le wrapper c++/cli. Le code compile, mais �a plante � l'ex�cution, avant d'entrer dans le main() du test en c#. Le message d'erreur est le suivant:
Un point qui m'attire l'attention c'est que le wrapper en c++/cli ne fait que 4Mo, alors que la lib en c++ natif fait de l'ordre de 100Mo. Or si c'est une lib statique, son assembly devrait �tre inclu dans la dll c++/cli, non?First-chance exception at 0x000007fefd92bccd in rankManagedDllTest.exe: Microsoft C++ exception: EEFileLoadException * __ptr64 at memory location 0x0045c5f8..
First-chance exception at 0x7741ce3b in rankManagedDllTest.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff.
First-chance exception at 0x7741ce3b in rankManagedDllTest.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff.
First-chance exception at 0x7741ce3b in rankManagedDllTest.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff.
An unhandled exception of type 'System.AccessViolationException' occurred in Unknown Module.
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Visiblement, le probl�me c'est qu'il ne parvient pas � loader la lib c++ dans l'executable c#, mais pourquoi?
Je me suis assur� que tous les binaires et les pdb soient bien g�n�r�s dans le m�me folder, mais �a ne change rien.
Je ne suis pas tr�s � l'aise avec le c++/cli, donc toute piste, remarque, conseil est le bienvenu.
Partager