我想在我的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.
}
答案 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 );
}