按一般的VC DLL方式写好像是不行了,在VC中能顺利加载,但在BCB中就会发生异常。希望可得到各位高人的指点,测试通过了的源代码是最好,到时400分一分不少,
我的信箱是 [email protected]. 谢谢。

解决方案 »

  1.   

    说明:DLL使用MFC静态MFC,使用MFC;在BCB调用中,使用显示加载。
      

  2.   

    CBC调用VC的DLL有两种方式:1)显示HMODULE hMod = LoadLibrary("SecurityCOM.dll");if(hMod)
    {
        BOOL bInit = -1;
        typedef BOOL(__stdcall * PFNSTARTUP)(VOID);    PFNSTARTUP pfnStartup = (PFNSTARTUP)GetProcAddress(hMod,
        "W32SecurityStartupCOM");    if(pfnStartup)
        {
            bInit = pfnStartup();
        }    FreeLibrary(hMod);
    }2)隐示
        
        欲使用VC的DLL在CBC中,首先使用CBC所提供的impdef.exe工具由VC的DLL生成LIB,再把生成的LIB包含到你CB的工程中即可,当然也要提供头文件;这个工具的位置在..\Program Files\Borland\CBuilder5\Bin\impdef.exe;   它的命令行方式为:
       impdef.exe   input_you_lib_name.lib  you_dll_name.dll   即可生成一个新的LIB;
      

  3.   

    extern "C" __declspec(dllexport)bool STDCALL CreateObject(char *astrName,LPVOID * apVoid)
    {
    if (astrName == NULL)
    return false;
    else
    {
    if (strcmp(astrName,"TEST")==0)
    {
    Ctest *lpObj = new Ctest;
    *apVoid = lpObj;
    }

    }
    return true;
    }
     类Ctest用继承纯虚函数,每个函数前记得加STDCALL就行了。
      

  4.   

    使用:
    dll type:
         1.regular dll using shared mfc dll
         2.regular dll with mfc statically linked(最好用这个)
      

  5.   

    用Windows API写一个标准的win32dll,应该就可以了!