主框架是我编写的, 负责调用指定目录下的插件. 插件种类很多. 所以
会有多个功能加入进来, 以DLL形式提供
比如: 功能A\功能B, 都有共有的属性(名字, ID, 当前值), 而这些属性需要共享给其他的功能, 所以我声明一个结构体链表, 保存这些属性//global.htypedef struct tagControlStruct
{
TCHAR szName[MAX_PATH];
UINT id;
VARIANT volume;
}ControlStruct;typedef struct tagGOLBAL_VAIRIABLE
{
TCHAR szAppPath[MAX_PATH];
CList <ControlStruct, ControlStruct&> m_listControl;
//等等, 其他变量
}GOLBAL_VAIRIABLE;在主框架中声明一个变量,
GOLBAL_VAIRIABLE m_stGlobalViariable;每加载一个DLL, 将这个全局变量传递过去, 提供他们使用.问题是这样: 如果以后需要增加一个全局变量, 全局变量结构体的大小改变, 其他的DLL也需要重新编译一次? 更加糟糕的是: 有些DLL是别人去开发的.所以, 怎么来解决这些问题, 还请大家发言表达看法! 谢谢!
会有多个功能加入进来, 以DLL形式提供
比如: 功能A\功能B, 都有共有的属性(名字, ID, 当前值), 而这些属性需要共享给其他的功能, 所以我声明一个结构体链表, 保存这些属性//global.htypedef struct tagControlStruct
{
TCHAR szName[MAX_PATH];
UINT id;
VARIANT volume;
}ControlStruct;typedef struct tagGOLBAL_VAIRIABLE
{
TCHAR szAppPath[MAX_PATH];
CList <ControlStruct, ControlStruct&> m_listControl;
//等等, 其他变量
}GOLBAL_VAIRIABLE;在主框架中声明一个变量,
GOLBAL_VAIRIABLE m_stGlobalViariable;每加载一个DLL, 将这个全局变量传递过去, 提供他们使用.问题是这样: 如果以后需要增加一个全局变量, 全局变量结构体的大小改变, 其他的DLL也需要重新编译一次? 更加糟糕的是: 有些DLL是别人去开发的.所以, 怎么来解决这些问题, 还请大家发言表达看法! 谢谢!
在主程序中 添加回调函数? 那功能DLL又怎么知道有哪些回调函数呢? 不还是要把回调函数列表告诉功能DLL?还是存在日后添加的问题阿
pkrobbie(pkrobbie) 这样不就是COM了? 增加接口, 变量对DLL是透明的
1.
-界面+实际功能
主程序: |
|
-COM接口(访问和修改主程序的变量)功能DLL: 查询接口, 然后进行相应的操作.2.
COM接口: 变量+接口函数
主程序: 通过COM接口修改变量
功能DLL: 通过COM接口修改变量第一种模式:
SDI程序如何添加一个接口呢? 可能吗?第二种应该没什么问题还没有仔细考虑可行性1谢谢大家了, 欢迎继续发言:)
但是旧的DLL还是要可以继续使用阿? COM接口的版本不就是这个意思吗?