在vc ++代码中调用vc ++ dll时出现未处理的异常

时间:2012-07-19 11:27:45

标签: visual-c++ dll loadlibrary

我想在我的vc ++代码中调用我的vc ++ dll。 但是出现错误 .exe中0x00000000处的未处理异常:0xC0000005:访问冲突读取位置0x00000000。

在最后一行之后。我通过序号no。

调用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.
}

2 个答案:

答案 0 :(得分:0)

您的var函数指针看起来像NULL。这意味着不会导出Ver_C

您可以使用dumpbin.exe /exports Prod.dll检查导出的功能(及其名称)

答案 1 :(得分: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 );
}