下面的函数,我可以链接到xx.dll文件,但是就是在函数GetProcAddress那里获取到的指针为空,是怎么回事?xx.dll里面存在这样的函数:
    int Sub(int a,int b ).{
CString str;
int x;
HINSTANCE dllHandle = NULL; 
FindArtistType FindArtistPtr = NULL; dllHandle = LoadLibrary("xx.dll");
if (NULL != dllHandle) 
{
FindArtistPtr = (FindArtistType)GetProcAddress
                                   (dllHandle,"Sub");

if (NULL != FindArtistPtr)
{
x = FindArtistPtr(1,2);
str = x + '0';
AfxMessageBox( str,NULL,NULL );
}
else
{
AfxMessageBox("Can't find funtion",NULL,NULL);
}                  //Free the library:
                  FreeLibrary(dllHandle);        }
else
{
AfxMessageBox("can't open dll file",NULL,NULL);
}

解决方案 »

  1.   

    int Sub(int a,int b )是Dll文件里面定义的,后面那段代码是应用Dll文件的,我没有写出函数名。
      

  2.   

    应该是函数名称不一致。如果拿C++开发Dll,如 Sub(int a, int b)实际的导出函数名称并不是这个,编译器会加名称的。(可以使用VC 工作 Depends查看真正的导出函数名称)一般写这种Dll导出函数,使用extern "C"定义。==============================================================
    百尺竿头,卧薪尝胆
      

  3.   

    谢谢了,我已经找到原因了。
    是因为我写的那个Dll文件的 .def 文件里面没有声明EXPORTS的相应函数。