最近我有以下想法,遇到了如下问题
    第一, 在BCB中,如何去调用一个VC中的DLL档,是否只要用LoadLibrary()函数将.dll 调进来?
    第二,当我在VC中调用VC编写的DLL时,发现一个奇怪的问题:所有函数的地址都是一样的,且为0x00000000;而那个指向 .dll的句柄有地址,且其地址为0x00e10000 ,我是按照下面的方式来调用的:
typedef int(*pMax)(int a,int b);
HINSTANCE hDLL;
PMax Max
HDLL=LoadLibrary("MyDll.dll");
Max=(pMax)GetProcAddress(hDLL,"Max");
A=Max(5,8);
Printf("比较的结果为%d ",a);
FreeLibrary(hDLL);//卸载MyDll.dll文件;我不知道为什么会产生这样的结果,请各位大侠帮帮忙!本人先谢啦。

解决方案 »

  1.   

    Max=(pMax)GetProcAddress(hDLL,"Max");
                                   ~~~估计vc dll当中那个函数的名字不叫Max
      

  2.   

    唯一可能的原因就是你的Max函数在DLL中根本就没有EXPORT
    如果不是这个原因,那只能帮你UP了
      

  3.   

    1、调用没问题,注意保证调用约定一致和数据类型一致~2、
    typedef int(*pMax)(int a,int b);
    HINSTANCE hDLL;
    PMax Max //-----------缺个分号~
    HDLL=LoadLibrary("MyDll.dll");
    Max=(pMax)GetProcAddress(hDLL,"Max");
    A=Max(5,8);
    Printf("比较的结果为%d ",a);
    FreeLibrary(hDLL);//卸载MyDll.dll文件;如果是笔误的话~那就是DLL的导出函数不使用extern "C" __declspec(dllexport)或者def文件所导出的~有name mangling问题~so……