调用dll有好几种方法,我想问一下我生成dll的时候,用的是在def文件中定义导出函数的方法:
MysquareRoot @1 NONAME
dll文件名是,mypj.dll。
但是,我不知道在测试工程里,引用我的导出函数的步骤是什么?
谢谢大家。

解决方案 »

  1.   

    声明函数 extern xxxxx NONAME(xxxxxxx)
    然后把mypj.lib加入到你的工程当中。
      

  2.   

    显式加载也可以1.定义函数指针结构类型
    2.先LoadLibrary,加载目标DLL
    3.然后GetProcAddress取函数地址
    4.然后就可以调用了
      

  3.   

    谢谢 idAnts,隐式已经成功了,
    kugou123所说的我还没成功:请大家帮我看看我那个地方有问题:
    dll的函数定义;
    double MyDelete(double d, double e)
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    TRACE("begin\n");
    return (d - e);
    AfxMessageBox("error input");
    return 0.0;
    }
    def文件定义:
    EXPORTS
        ; 明示的なエクスポートはここへ記述できます
    MyDelete @1
    调用dll。
    void CMynewd::OnDel() 
    {
    typedef double (*MyDelete)(double a, double b);
    HINSTANCE hDLL;
    UpdateData(TRUE);
    MyDelete mydelete;
    hDLL = LoadLibrary("D:\Test\mypj1\Debug\mypj1.lib");
    mydelete=(MyDelete)GetProcAddress(hDLL,"MyDelete");
    m_result = mydelete(m_begin,m_end);
    UpdateData(FALSE);
    FreeLibrary(hDLL);
    }
    结果没有成功,什么原因呢?