0

vc++ コードで vc++ dll を呼び出したいです。しかし、 .exe の 0x00000000 で Unhandled exception: 0xC0000005: Access violation reading location 0x00000000というエラーが発生します。

最後の行の後に、序数番号で vc++ dll を呼び出しました。

.h ファイル内

typedef int (*LPVAR)(char * ptr_f, char *CC);

.cpp ファイル内

HINSTANCE hDLL;
hDLL = NULL;
LPVAR var;
hDLL = LoadLibrary("Prod.dll");


if( hDLL == NULL )
    AfxMessageBox("Could not load the DLL");

/*int ordinal = 2;
HMODULE  dll = LoadLibrary("Prod.dll");
FARPROC fn = GetProcAddress(dll, MAKEINTRESOURCE(ordinal));*/ //how to proceed after this.

else
{
    var = (LPVAR)GetProcAddress(hDLL, "Ver_C");
    char *ch,a;
    ch = (char*)malloc(100*sizeof(char));

    a = 'z'; 
    int ans = var(ch,&a); //Unhandle exception after that.
}
4

2 に答える 2

0

実際には、問題は freelibrary であり、解放した後、現在の値を持っています。

else
   {
    var =(LPVAR)GetProcAddress(hDLL, MAKEINTRESOURCE(2));
    char *ch,a;
    ch = (char*)malloc(100*sizeof(char));

    a = 'z';
    int ans;
     ans = var(ch,&a);
     if ( hDLL != NULL )
             FreeLibrary( hDLL );
}
于 2012-07-19T12:51:46.973 に答える
0

var関数ポインタはのようですNULLVer_Cエクスポートされていないことを意味します。

を使用dumpbin.exe /exports Prod.dllして、エクスポートされた関数 (およびその名前) を確認できます。

于 2012-07-19T11:42:23.090 に答える