2009-08-27 8 views
0

lorsque nous écrivons Assembly asm = AppDomain.CurrentDomain.Load (SomeByteArray);appdomain C++ C#

lorsque SomeByteArray lu à partir de .net .exe tout est ok, et quand à partir de C++, erreur.

pour cette fonction est important en utilisant .net exe?

si oui s'il vous plaît autre moyen de le faire.

grâce

+0

Quand vous dites « C++ » voulez-vous dire C++/CLI? Quelle est l'erreur exacte que vous obtenez? –

+0

Impossible de charger le fichier ou l'assemblage '38400 octets chargés à partir de ConsoleApplication3, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = null' ou l'une de ses dépendances. Une tentative de chargement d'un programme avec un format incorrect a été effectuée. ConsoleApplication3 est mon programme où j'appelle méthode AppDomain.CurrentDomain.Load (modèle), grâce –

+1

Je pense qu'il est impossible :( AppDomain.CurrentDomain.Load (SomeByteArray); SomeByteArray doit être .net :(, j'ai raison? –

Répondre

0

sont l'assemblée d'appel et celui que vous chargez à la fois le même genre de construction (x86, x64 ou anycpu)? Vous pouvez vérifier la construction en les regardant dans ILDASM (regardez le manifeste, faites défiler vers le bas et cherchez les corflags).

Si vous avez construit les deux assemblages vous-même, vérifiez simplement les pages de propriétés du projet pour savoir comment vous l'avez construit.

Vous devez vous assurer qu'ils sont identiques, ou si le fichier .exe est AnyCpu, l'assembly que vous chargez doit correspondre à tout le système d'exploitation. Cela signifie qu'il doit s'agir de x86 sur un système d'exploitation 32 bits ou de x64 sur un système d'exploitation 64 bits.

(ce qui est tout en supposant que SomeByteArray a été chargé à partir du fichier correctement)