我要在DLL中定义一个可供客户程序使用的CList对象。在DLL的某个cpp中定义一个全局变量CList对象
//mydll.cpp
CList <Type,Type&> mylist(120);在mydll.h中导出mylist
//mydll.h
_declspec(dllimport) extern CList<Type,Type&> mylist;将mydll.h发布给客户。但DLL工程编译不通过。ERROR:error c3143
error C2904: 'CList' : template-name already defined as 'int CList'DLL中同样定义了其它的全局变量,如double型的,进行了同样的处理,经测试是可以使用的,办法是行的通的。
那为什么CList类对象就不可以呢?敬请高人指教。
       

解决方案 »

  1.   

    DLL 中就不要导出这种复杂数据啦自己找麻烦
      

  2.   

    这是实在话。由于dll是动态载入的,你再导入一个全局变量,这在访问上会有问题的。你应该把全局变量信息隐藏住,不要让exe使用。如果你要访问它,你的dll应该提供接口函数来使用你自己私有的全局变量,而不是让exe直接去访问这个全局变量
    而且,即使不在dll中,使用全局变量永远是最后的选择,如果你有其他方法,就不要用全局变量。