我有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, 所以很多问题都还不知道, 请大家教教我呀! 在此感激不尽!

解决方案 »

  1.   

    1、只要把所有公用的结构体定义放到一个公用的.h文件中就可以了2、消息也应该放到这个.h文件里面,WM_USER值是一样的3、全局变量的定义应该放到.cpp文件里面去4、全局变量的初始化也应该放到.cpp文件中去5、DLL中要访问这个全局变量,可以定义一个接口函数,例如InitList( CList *pList ),
    然后框架调用这个函数把全局变量指针传递进去,DLL就可以保存这个指针并使用了
      

  2.   

    1:每个工程有不同的头文件,凡是导出变量、结构、类、函数的声明同一放在一个头文件中,并且把这个头文件的路径放在整个工程的Include目录中,添加这个目录的inlcude路径
    2:定义资源和消息最好不要重名,容易引起莫名其妙的问题。所以应该为每一个工程统一分配一个区间的ID号
    3:放在框架里,头文件中导出声明(_declspec(dllimport)),def文件中定义
    4:把全局变量放在.cpp文件中,可以初始化,把它的声明放在头文件中
    5:声明成_declspec(dllimport),然后在.def中定义,就可以在其他工程中使用了,没有必要将指针指向全局变量
      

  3.   

    我只说一点:
    我通常是这样作的:
    把全局变量和结构等放在一个globle.h文件里面。把这些全局变量的初始化放到globle.cpp文件里。