我用.net2003生成个Regular DLL using shared MFC DLL 的DLL工程,编译后把DLL文件放到另外一个工程目录下,但是LoadLibrary失败,返回0,GetLastError得到错误代码是126,是什么原因?

解决方案 »

  1.   

    我的dll中只是写个这个函数:
    extern "C"  _declspec(dllexport) double SquareRoot(double d)
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    if (d >= 0.0)
    return sqrt(d);
    AfxMessageBox("negative number!");
    return 0.0;
    }
    文件头加了行#include <math.h>,编译DLL工程没有问题。
    另外一个工程用这个DLL文件,
    typedef double (SQRTFUNC)(double);
    HINSTANCE hInstance;
    SQRTFUNC* pFunction;
    hInstance = ::LoadLibrary(_T("testdll.dll"));
    long lRes=::GetLastError();
    if (hInstance)
    {
    VERIFY(pFunction = (SQRTFUNC*)::GetProcAddress(hInstance, "SquareRoot"));
    lRes=::GetLastError();//
    m_dRetRoot = (*pFunction)(9);
    UpdateData(false);
    ::FreeLibrary(hInstance);
    }
    但是hInstance一直是0,为什么?
      

  2.   

    我就把DLL复制到另外一个工程目录下啊,应该这样就可以的了