显式调用时,GetProcAddress获得的指针为空。是什么原因呢?隐式调用该动态库没有问题。m_hInstMaster = LoadLibrary("myapple.dll") ;
if(m_hInstMaster)
{
   (FARPROC&)AppleWash= GetProcAddress(m_hInstMaster,_T("AppleWash"));
}

解决方案 »

  1.   

    用相对路径意味着程序依赖“当前目录”,而当前目录是随时变化得,因此会时不时失败
    至于隐式调用,系统可能会再PATH环境变量指定得路径中搜索,所以能找到答案:不要用相对路径,用绝对路径
      

  2.   

    看看FARPROC和dll的AppleWash之间的调用约定是否一致
      

  3.   

    arong, 在LoadLibrary这一步是没有问题的。问题是在GetProcAddress时得不到函数指针
      

  4.   

    在.def文件中写入需导出的函数,再重新编译
      

  5.   

    chehw,我已用depends查过了,导出的函数没有问题。况且隐式调用是没问题的。可能是五岭散人说对,我再看看。
      

  6.   

    文件名在DEF里写好,否则会被修饰了
      

  7.   

    你的DLL可能是用非WinApi方式命名的,
    在depends看到是什么?是不是_AppleWash@n这种形式的?如果是,将在depends里面看到函数的名字完整的抄下来,然后
    FARPROC AppleWash = GetProcAddress(m_hInstMaster,_T("_AppleWash@n"));//用抄下来的完整的名字。
      

  8.   

    FARPROC AppleWash;
    m_hInstMaster = LoadLibrary("myapple.dll") ;
    if(m_hInstMaster)
    {
       AppleWash= GetProcAddress(m_hInstMaster,_T("AppleWash"));
    }
      

  9.   

    ouyh12345(五岭散人) 
    shanhe972005(茫然走在海边看那潮来潮去)这和是否一致没关系,如果LoadLibrary没错(注意,相对路径还是隐患),那么就只有函数名字和实际不匹配了用dumpbin看看他输出的名字到底是啥,
    也可以看看这个
    http://blog.vckbase.com/arong/archive/2004/06/09/409.html
      

  10.   

    在depends和dumpbin中看到的名字是   _AppleWash@8
      

  11.   

    chehw和WizardK说得都对,很抱歉忘了给分。以后会补上的。