Visual c++ 调用vc++;vc+中的dll+;代码

Visual c++ 调用vc++;vc+中的dll+;代码,visual-c++,dll,loadlibrary,Visual C++,Dll,Loadlibrary,我想在我的vc++代码中调用我的vc++dll。 但是错误发生在.exe:0xC0000005:访问冲突读取位置0x00000000中的0x00000000处未处理的异常。 在最后一行之后。我已经按序号调用了vc++dll 在.h文件中 typedef int (*LPVAR)(char * ptr_f, char *CC); 在.cpp文件中 HINSTANCE hDLL; hDLL = NULL; LPVAR var; hDLL = LoadLibrary("Prod.dll"); i

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

看起来您的
var
函数指针是
NULL
。这意味着不导出
版本C


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

事实上,问题是freelibrary在释放它之后有了currect值

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

当您更改var=(LPVAR)GetProcAddress(hDLL,“Ver_C”);to var=new(LPVAR)GetProcAddress(hDLL,“Ver_C”);出现此错误…“无法从'CProductionTestDlg::LPVAR*'转换为'CProductionTestDlg::LPVAR'”,然后在其中放入一个*(LPVAR(可能在这里))不,这不起作用:(好的。忘记所有这些。只需将声明类型更改为LPVAR*@vikky。调用
GetProcAddress
后是否可以打印
var
的值?var的值为0x00000000。这意味着函数失败,原因可能是什么。