0xC0000005: violation d'Accès de l'exécution de l'emplacement 0x00000000

Je suis en train d'écrire un projet MFC qui essaie d'appeler une fonction dans la DLL qui va retourner une partie de l'information dans une chaîne de caractères. La fonction dans la DLL est comme suit:

int GetInfo(char* Info)

La fonction retourne 0 en cas de succès. L'Information sera retourné dans le paramètre de la chaîne. L'appel de la routine est comme suit:

typedef int (WINAPI *FUNC1)(char* szInfo);


HINSTANCE hinstLib;
FUNC1 GetInfo;
char szInfo[50];

hinstLib = LoadLibrary(TEXT("DevInfo.dll"));

//If the handle is valid, try to get the function address.
if (hinstLib != NULL) 
{ 
    GetInfo = (FUNC1) GetProcAddress(hinstLib, "GetInfo"); 

    //If the function address is valid, call the function.
    if (NULL != GetInfo) 
    {
        if((GetInfo) (szInfo)) //Error here!!
        {
            AfxMessageBox(_T("Error Reading"));
        }
    }

    FreeLibrary(hinstLib);
} 

Ce code n'a pas d'erreur dans la compilation et la liaison. Lors de l'exécution, il sera de retour l'erreur de violation d'Accès "de l'exécution de l'emplacement 0x00000000" à l'emplacement indiqué ci-dessus. Quelqu'un peut-il des conseils?

  • int WINAPI(char*) et int(char*) ne sont pas la même chose. Votre fonction shold être au moins prototypée comme int WINAPI GetInfo(char*)
  • Êtes-vous sûr que l'erreur est là, et pas dans le GetInfo fonction?
  • Quel est le débogueur de montrer que la pile d'appel, etc lorsque l'exception est levée?
  • Je n'ai pas le code de la DLL. Ne peut donc pas modifier la fonction. J'ai essayé de changer le typedef int (WINAPI FUNC1)(char szInfo) pour typedef int (FUNC1)(char szInfo) et toujours le même message d'erreur.
  • La pile d'appel est présenté comme 00000000() [Images ci-dessous peut-être incorrect et/ou manquant] DevInfo.dll!002711eb()
  • Ok, essayez de vice-versa: ne pas utiliser la WINAPI dans vos déclarations

InformationsquelleAutor user2845698 | 2013-10-04