请你先解释一下什么叫做“配置”。
如果你的意思只是“调用”的话,应用程序中应该已经包含了Dll的调用信息。或者说Exe的作者已经知道了Dll的方法类型以及参数结构等。此外插件技术的实现方法有很多,比如说脚本或者Dll等。有些插件的本质就是Dll

解决方案 »

  1.   

    我说的“配置”是指这平台给个可视化的界面,开发者只有把你的Dll的文件名,Dll中的函数名,参数个数,参数类型,参数返回值类型型的设置)好,这个平台就可以调用你开发的函数啦!
    To 数字蛋糕 插件好像对外的接口的类型是固定的吧!只是函数内部的功能不同罢了吧!这只是我个人的看法!
      

  2.   

    是指只有你设置好啦!程序不用重新编译!就是还是原来那个程序。因为别人作的平台也就是为这呀!我的工作只是对Dll的编写。 :0可能是我说的不是太清楚!
      

  3.   

    你可以动态的装入dll,myhandle=loadLibrary('文件名')
    然后用@mypro:=getProcAddress(myhandle,'程序名')其中文件名和程序名都是字符串,都可以在配置文件中取.
    但是注意的是程序的参数必须一致.
      

  4.   

    to (皮皮虾)平时我们一般都是这样动态调用Dll的吧!
    procedure Proc_play; 
    Type
     TDllfunc =Procedure(Params:intger);stdcall;  //---->注意这个地方!
    var
       hLib: THandle;
       FPointer: TFarProc;
       DllFunc: TDllfunc;
    begin
      hLib := LoadLibrary(PChar('xxx.dll'));
      if hLib > 0 then
         try
            FPointer := GetProcAddress (hLib,PChar('myproc'));
            if FPointer <> nil then
              begin
                DllFunc := TDllFunc(FPointer);
                DllFunc();
              end
            else  ShowMessage ('失败!');
         finally
            FreeLibrary (hLib);
         end
     else
        ShowMessage ('执行【经纪人话务统计】功能失败!');
    end;上面注意的地方是,你所谓要动态调用的函数还是要声明函数结构的!
    你能做到不在程序中声明就调用吗?就是要把声明作为一个字符串进行定义。
    这也是我想不通的地方!
    那个高手能帮小弟搞明白吗?
      

  5.   

    上面的例子参数敲露啦 ,随便敲个数吧!
     if FPointer <> nil then
              begin
                DllFunc := TDllFunc(FPointer);
                DllFunc(10);
              end
      

  6.   

    main(int argc char **argv)
    知道吗?差不多的原理吧
      

  7.   

    sephil无精打采的走了进来
    有气无力的抬头看了看
    又垂着头,无精打采的出去了
    众人回头看时
    依稀见他肩头扛着一块大木牌
    上面似乎写着:
        
        关      注
      

  8.   

    用VC可以解决,如果你需要,我用VC给你做个DLL,
    你只要传入函数名称和相应的参数就可以了。
      

  9.   

    to 白日梦 对呀就是这个意思!
    能给我发一个例子吗?不管是什么写的都行!拜托啦!
    我的mail 是[email protected]我一定加分!
      

  10.   

    这个问题很简单呀只要在你的程序里声明:
    type
      TMyProcedure = procedure(A,B: Integer); cdecl;然后:procedure tform1.buttonclick(sender: TObject);
    var
      handle: Integer;
      Proc: TMyProcedure;
    begin
      handle := LoadLibrary(Edit1.Text);  //Dll 的名字。  if handle <> 0 then
        proc := GetAddress(handke, 'AAA');  if Proc <> nil then
        Proc(i, j);
    end;
    这样,只要这个Dll里面声明了一个叫做AAA的函数,参数和调用规则都和你的程序里设定的
    一样,那么,任何的Dll都可以调用,只要知道名字。大意如此,代码也只是示例,呵呵,错误之处,在所难免。请见谅。
      

  11.   

    数字蛋糕 怎么会没有必要?这是一种比较好的接口方式呀!而且一般的程序员对Dll都比较会写呀!:)
      

  12.   

     这么个简单的问题,怎么讨论了这么久?难道Windows那些DLL都是吃素的?还有,大家看到过哪个正式一点的程序说:
    因为Windows的DLL的关系,你需要在不同版本的Windows下编译一遍才能运行?大概20年前,程序就做的了可以共享函数库了,现在更是先进一步,有了Com Corba等等
    技术,
    大家还在为这么个问题讨论这么久?
      

  13.   

    靠,你的要求只能在com里面实现,如果可以那么vc++或delphi里面都不用有
    那么多的win32头文件了。com的接口方式跟dll的完全不同机理