各位,如何把一个大的程序分成相互较为独立的几个小部分,打个比方,一个大程序中有专门的数据录入的功能,还有查询的功能,统计的功能,我想把每一个功能单独做成一个工程,单独测试编译,如果可以的话,再加入到大的工程中,请问那们知道该如何设计工程,是不是一个工程中包括几个工程,如果是,那么怎么做呢(具体),谢谢

解决方案 »

  1.   

    设计一个主工程,然后将每个模块工程也建立,
    使用depend选项,将模块工程加入
      

  2.   

    建立不同的工程,生成不同的dll
      

  3.   

    我一般是在工程的目录下建一个Include文件夹用来放公共的头文件, 建一个Lib文件夹输出文件如exe,Dll,lib然后就在工程目录里创建子工程,创建的每个子工程加入C/C++编译参数:/I "../Include", 然后注意把所有和输出有关的路径都改为输出到"../Lib"下。
      

  4.   

    In355Hz,说的那样有些复杂,我听不懂,能不能详细说一下,一步一步告一下小弟,多谢。
      

  5.   

    只需一个dll就行,太多的dll不利于管理和修改,在一个dll中建立个各类,如:录入类,查询类,统计类。
      

  6.   

    我一般管理多个子工程的办法:1、建一个总的工程目录,把所有子工程的目录,都放在总工程目录下。2、象DLL,StaticLib,定义的Interface等的头文件肯定要被其他子工程包含,我一般在总的工程目录下创建一个"Include"目录,把需要公用的头文件可能还有资源*.rc都转移到该目录下,便于内容同步,原来的子工程里的相应文件不再保留。3、这时需要在子工程中删掉转移后路径不对的文件,重新从Include目录添加,由于这样编译会找不到Include路径,必须在Project Settings-->C/C++页的编译参数中手工添加:/I "../Include"。4、如果有公用的*.rc资源的话,在View-->Resource Include...-->可以在下面的编辑框里找到#include "l.chs\afxres.rc"之类的语句,仿照他另起一行添加:#include "xxx.rc",并且在Project Settings-->Resource页--〉Additional Resource Include Directories中填入..\Include5、在总的工程目录下新建一个子目录"Lib",把各个子工程输出的.exe,.lib,.dll的文件都放到这个目录下,可以手工拷贝,也可以让VC自动完成,设置比较麻烦:把每个子工程的Project Settings-->Link页-->Output File Name都改为../Lib/****,改完后注意该页下的命令行有没有:/out:"../Lib/****"如果工程是DLL,注意把/implib:"../Lib/****.lib"也改过来
    如果工程是EXE, 注意在命令行添加/libpath:"../Lib",如果非EXE子工程也Link了其他子工程的Dll或Lib,都要添加此行。
    如果工程是Static Lib,Project Settings没有Link页,注意在Library页改动out路径。此外,注意所有子工程Project Settings-->Debug页的调试路径,如果不对,改成正确的路径。不知到这些是不是你需要的,一般一个EXE不要连接太多的dll,一般也就两三个子工程,如果需要再细分子工程,可以做成static lib,连接了其他static lib的static lib有时可能造成Link冲突,一般可以借助Link的参数:
    /NODEFAULTLIB:xxx.lib 解决,一般在一个子工程里利用不同的功能类解决模块化的问题是比较方便的,也不需要以上的设置,不过相互之间要做更多的代码协调工作,比如规定变量命名规范,防止宏定义冲突,规定可用的公共变量,宏和函数等。