0xC0000005: Zugriffsverletzung ausführen Position 0x00000000

Schreibe ich ein MFC-Projekt, versuchen Sie, rufen Sie eine Funktion in die DLL wird wieder einige Informationen in einem string. Die Funktion in der DLL ist wie folgt:

int GetInfo(char* Info)

Die Funktion 0 zurück, wenn Erfolg. Informationen zurückgegeben werden, die in der string-parameter. Die aufrufende routine ist wie folgt:

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);
} 

Diesem code keinen Fehler beim kompilieren und verknüpfen. Bei der Ausführung wird es wieder den Fehler "Zugriffsverletzung ausführen Position 0 x 00000000" an der Stelle oben angegeben. Kann jemand Rat?

int WINAPI(char*) und int(char*) sind nicht das gleiche. Ihre Funktion sollte mindestens Prototyp als int WINAPI GetInfo(char*)
Sind Sie sicher, dass der Fehler dort und nicht in der GetInfo Funktion?
Was macht der debugger zeigen, wie der Aufruf-stack, etc, wenn die exception geworfen wird?
Ich habe nicht den DLL-code. Somit kann es nicht ändern, die Funktion. Ich habe versucht, die änderung der typedef int (WINAPI FUNC1)(char szInfo) typedef int (FUNC1)(char szInfo) und noch immer den gleichen Fehler.
Der call-stack wird gezeigt, wie Sie 00000000() [Frames unten vielleicht falsche und/oder fehlende] DevInfo.dll!002711eb()

InformationsquelleAutor user2845698 | 2013-10-04

Schreibe einen Kommentar