0

我想在我的 vc++ 代码中调用我的 vc++ dll。但错误发生在 .exe 中 0x00000000 处的未处理异常:0xC0000005:访问冲突读取位置 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

看起来你的var函数指针是NULL. 这意味着Ver_C没有出口。

您可以dumpbin.exe /exports Prod.dll用来检查导出了哪些函数(及其名称)

于 2012-07-19T11:42:23.090 回答
0

实际上,问题是免费后的免费图书馆,它具有当前价值。

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 回答