我有5个DLL功能库, 和一个框架, 大家都用到相同的结构体1. 将所有的结构体放到一个.h文件, 这种方式应该还算方便, 有没有更好的办法?2. 我现在要定义DLL和框架通信的消息, 也可以将这些消息放到这个.h文件里面吗?
比如: #define MSG_DELETE WM_USER+100
主框架和DLL的 WM_USER 值是一样的吗? (这个问题优点弱Z似的)3. CList <CARD_PARAM, CARD_PARAM&> g_OutputDevice;
这样一个全局变量放在框架里面还是头文件里面方便呢? 4. 以前我好像在头文件里面初始化全局变量, 却没有成功,可能这个.h文件不会被编译吧, 我是不是得定义一个类,作为全局用?5. 在DLL中怎么访问这个全局变量 呢? 难道在DLL中 CList <CARD_PARAM, CARD_PARAM&> *g_OutputDevice;, 然后将指针指向全局变量?
项目中第一次用到DLL, 所以很多问题都还不知道, 请大家教教我呀! 在此感激不尽!
比如: #define MSG_DELETE WM_USER+100
主框架和DLL的 WM_USER 值是一样的吗? (这个问题优点弱Z似的)3. CList <CARD_PARAM, CARD_PARAM&> g_OutputDevice;
这样一个全局变量放在框架里面还是头文件里面方便呢? 4. 以前我好像在头文件里面初始化全局变量, 却没有成功,可能这个.h文件不会被编译吧, 我是不是得定义一个类,作为全局用?5. 在DLL中怎么访问这个全局变量 呢? 难道在DLL中 CList <CARD_PARAM, CARD_PARAM&> *g_OutputDevice;, 然后将指针指向全局变量?
项目中第一次用到DLL, 所以很多问题都还不知道, 请大家教教我呀! 在此感激不尽!
然后框架调用这个函数把全局变量指针传递进去,DLL就可以保存这个指针并使用了
2:定义资源和消息最好不要重名,容易引起莫名其妙的问题。所以应该为每一个工程统一分配一个区间的ID号
3:放在框架里,头文件中导出声明(_declspec(dllimport)),def文件中定义
4:把全局变量放在.cpp文件中,可以初始化,把它的声明放在头文件中
5:声明成_declspec(dllimport),然后在.def中定义,就可以在其他工程中使用了,没有必要将指针指向全局变量
我通常是这样作的:
把全局变量和结构等放在一个globle.h文件里面。把这些全局变量的初始化放到globle.cpp文件里。