2010-08-02 5 views
1

La ligne suivante génère une erreur d'exécution dans une interface graphique C#:Appeler un C++ .dll de C# génère une erreur d'exécution

int x = myclass.number_from_dll(); 

J'utilise Microsoft Visual Studio 2008.

Le code C# est:

class myclass 
{ 
    [DllImport("strat_gr_dll.dll", EntryPoint = "number_from_dll")] 
    public static extern int number_from_dll(); 
} 

le code dans le .dll C est de:

// This is an example of an exported function. 

DLL int number_from_dll(void) 
{ 
    return 42; 
} 

L'erreur d'exécution de .NET est:

An attempt was made to load a program with an incorrect format. 
(Exception from HRESULT: 0x8007000B) 
+0

Exportez-vous cette fonction avec un nom convivial? –

Répondre

4

projet + Propriétés, onglet Construire, Plate-forme cible = x86.

Votre DLL C/C++ a été compilée en mode 32 bits. Mais votre programme C# s'exécute sur une version 64 bits de Windows et fonctionnera en mode 64 bits. Ce mélange ne correspond pas. Créer une version 64 bits de votre DLL est une autre solution. Build + Configuration Manager, Plate-forme combinée, Nouveau, x64.

+0

Merci beaucoup soooooo - Je viens de passer les 4 dernières heures à essayer de traquer ce problème, vous êtes une légende! – Contango

Questions connexes