想将dll外面再包装一层dll,该如何做,谢谢

解决方案 »

  1.   

    dll外再包层dll,你是指的往dll里再写入资源吗?
      

  2.   

    很简单啊,在新dll中直接调用老dll就可以
      

  3.   

    就象主程序调用DLL那样写代码就行
      

  4.   

    加载到USE UNIT一样进行调用。
      

  5.   

    首先要讲清楚静态调用和动态调用的区别。
    1 静态调用,在pas文件中直接指定DLL和定义调用函数,在程序开始运行时,就会自动寻找该DLL,并载入内存。
                A 即是无论你用不用,都要载入到内存中。
                B 如果程序运行时,找不到要载入的DLL,就会报错,无法运行。
                C 通常应用在于系统功能关联密切,必须而且经常使用的DLL。2 动态调用,在程序段中使用LoadLibrary('mydll.dll')加载。
                A 在程序开始运行时,不会自动加载,只有在使用时,再通过LoadLibrary加载。
                B 因此即使没有该DLL,程序的其他功能还可以使用。只是要用到该DLL,发现没有才会报错。
                C 通常应用于对系统功能关联不密切,使用频率低的DLL。当然也有节省内存,优化性能的特点。
                D Freelibrary与LoadLibrary要成对使用,是为了保证调用的内存空间有效释放。
    例子:varHandle:Thandle;addc:Taddc;beginHandle:=LoadLibrary('Testdll.dll');//加载dll  @addc:=GetProcAddress(Handle,'Test'); //取Test函数入口地址,大小写敏感。
      
      if @addc<>nil then  begin  edit1.Text:=IntToStr(addc(10));//参数传递,这里直接用10  end;  Freelibrary(Handle);//从内存释放dllend;