动态调用容易
不过你得知道 函数在vc中相应的声明方式
简单的例子
typedef int (PASCAL *TYPE_MYFUN)(HWND,LPCTSTR,LPCTSTR,UINT);
TYPE_MYFUN MyFun;
HMODULE hUserDll=LoadLibrary("user32.dll");
MyFun=(TYPE_MYFUN)GetProcAddress(hUserDll,"MessageBoxA");
MyFun(0,"asdasd","aaa",0);静态调用也容易
自己建立一个dll工程,按着导出函数的顺序依次添加函数,用def文件限定导出名字.
然后用这个dll工程生成的lib库 去做静态链接用.
不过同样得知道函数在vc中相应的声明方式
ps用工具声明的lib库似乎无法保证没有问题

解决方案 »

  1.   

    调用delphi写的dll,注意的就是参数的类型
      

  2.   

    需要注意的是 函数调用方式 stdcall或者cdecl
    参数个数和类型是调用成功的关键
    所以必须只要原来函数在pascal中的声明.
    静态调用就是调用api是一样的,包含头文件,和相应的lib.
      

  3.   

    function VodInitCard : integer; stdcall;
    是stdcall的吧,严格按照动态调用方法调用,还是出错
    HINSTANCE dll;
    int return_value;

    typedef int(__stdcall *dll_fun)();
    dll = ::LoadLibrary("MultVod.dll");
    if(dll==NULL)
    {
    AfxMessageBox("Can't find dllFile");
    return 0;
    }
    dll_fun proc = (dll_fun)GetProcAddress(dll,"VodInitCard"); if (proc = NULL)
    {
    AfxMessageBox("can't find function:VodInitCard"); 
    return 0;
    }
    else 
    {
        return_value = proc();//出错位置,前面都正确
        return return_value;
    }
    有错误请指出,谢谢