小弟我写了个程序,有两个模块,一个为moDll模块,另一个为MapView模块。配置类型都是dll动态库。
moDll模块中一个有一个CMoToolSelect类,里面定义了一个static CString strToolName静态变量,并赋值为"ToolSelect"。
然后我用class __declspec(dllexport) CMoToolSelect将CMoToolSelect类整个导出。
MapView模块导入了moDll模块,在MapView模块中有一条赋值语句CString strTemp = "ToolSelect";
编译的时候系统会提示error C1001 编译器内部错误,要求询问微软技术支持解决问题。如果不导出moDll模块的static CString strToolName变量,则不会有这个问题。请问各位高手知道具体原因吗?能不能给小弟解释一下。小弟不胜感激!谢谢!

解决方案 »

  1.   

    嗯,学习学习,帮你顶
    不会是static不能导出吧
    好像有点什么印象
      

  2.   

    还有,我用的是VC.Net 2003。MapView模块中只要用到"ToolSelect"给别的变量赋值或者判断一个字符串是否为"ToolSelect"就会报这个错误。
      

  3.   

    static变量倒是可以导出来,就是用的时候就出错了。
      

  4.   

    呵呵,最简单可行并符合C++规则的用法,在CMoToolSelect中提供一个成员函数用于操作static CString strToolName这个静态成员变量!
      

  5.   

    导出不了static变量没关系,我关键是不知道为什么这种情况下MapView模块中不能使用"ToolSelect"给其他变量赋值。
      

  6.   

    个人认为还是直接操作static类型的变量引起的,顺便帮你顶!◎
      

  7.   

    把 static int x = 0; 放入共享内存段
    必须赋初值