做一个工程,新建了一个dsw 包含很多个dsp目录  然后新建了一个main 目录设置 working directory为这个main目录。xxx.dsw   main目录                 程序目录1        程序目录2          dll目录1         dll目录2
          各种exe dll ini文件等   源文件 debug目录  源文件 debug目录   源文件 debug目录   源文件 debug目录
现在遇到大问题。如果将 working directory 目录 output file name 目录 全部设置在main目录下(方便各个dll exe 和资源互相调用)。这样的话遇到个CDataTimePiker 空间没法正常工作老是取不到值。 把out put file name 改到 dsp目录的debug目录下就正常了。现在又出问题了。
working directory  设置成 main文件夹  output file name 就设置在程序目录自己的debug下。有个程序的一个dialog界面中。在debug状态下没有问题,执行都正常。而且正常exe输出到main但是到main目录下直接执行该exe就出错提示,错误位置在 file:afx.inl 
                    line:22
用messagebox 定位了下
MessageBox("1");
strCondition=" where convert(varchar(10),dtime,120)>='"+strBegintime+"' and convert(varchar(10),dtime,120)<='"+strEndtime+"'";
MessageBox("2");居然是执行到这个语句出错了。
但是如果直接将main目录的各种资源copy到程序目录下,然后将debug下的exe也拷贝到该目录,执行就没有问题。
这个让我百思不得其解诶。要是因为资源的目录不对引起访问出错,那都好解释的。现在这个算什么?
哪位大哥大姐碰到过类似情况的?指教下小弟

解决方案 »

  1.   

    据我的经验,不是路径的问题,应该是内存的问题。某段内存的使用超限了,debug状态和执行状态的内存分配是不一样的,所以出现不同的结果。重点检查指针,数组等代码。实在不行就用排除法,删除一些代码试试。很有可能不只一处,用 C++ 一定要管好内存。不过微软的人也管不好。大家努力吧。
      

  2.   

    问题解决了,但是方式却.................将CString 成员变量 改成 类成员变量就没有问题了。无语了...................