程序框架:
主程序.(主程序负责加载DLL)
n多个DLL, 这些DLL由不同的人编写, 还有可能是别的公司编写(插件).
我一开始考虑用个全局结构体, 由主程序建立, 然后传递给每个DLL, 但是被考官否定了, 说这样扩展性不行. 如果现在要增加一个全局变量, 那个DLL应该无法继续运行, 他的DLL需要重新编译.
后来我想到用COM接口实现, 创建一个.EXE的COM; 这样的话:增加了全局变量, 需要用这个变量的DLL只需请求接口就行了.不过答案还没有提交上去, 有几个问题不太明白.1. 如果这个主程序容许运行多个, 每个DLL找到自己对应的那个EXE.COM呢? 难道让主程序把这个COM对象通过参数传递给DLL? 2. 假设现在有个全局变量:<授权文件的路径>; 接口中肯定就会有一个put和get操作, 如何防止其他DLL执行put操作呢? (难道要把接口信息分开提供出去? put操作的自己保留?)3. 假设主程序有个结构体变量, 我应该让COM拷贝这个结构体还是指向这个结构体呢?

解决方案 »

  1.   

    用C++之类的写个DLL,专门放共享变量.
    蒙的 D:
      

  2.   

    后来我想到用COM接口实现, 创建一个.EXE的COM; 这样的话:增加了全局变量, 需要用这个变量的DLL只需请求接口就行了.就是这个
      

  3.   

    写一个共通的类放一些基本信息,所有的dll都是继承这个类来写就可以了.
      

  4.   

    upfranco137(弗朗哥>>>捕捉一下生命,雕刻一下时光) 1. 如果这个主程序容许运行多个, 每个DLL找到自己对应的那个EXE.COM呢? 难道让主程序把这个COM对象通过参数传递给DLL? 2. 假设现在有个全局变量:<授权文件的路径>; 接口中肯定就会有一个put和get操作, 如何防止其他DLL执行put操作呢? (难道要把接口信息分开提供出去? put操作的自己保留?)3. 假设主程序有个结构体变量, 我应该让COM拷贝这个结构体还是指向这个结构体呢?
      

  5.   

    yui1kawa() ( ) 信誉:100  2006-05-31 11:29:00  得分: 0  
     
     
       写一个共通的类放一些基本信息,所有的dll都是继承这个类来写就可以了.
      
     
    那些变量并不是由创建时就确定的, 是需要动态增加的, 比如有链表
      

  6.   

    winthegame(120斤重的大青蛙) :
    是我每分了通过结构体指针, 如果需要增加一个全局变量, 没有重新编译的程序能工作吗?