在一个MFC工程中,导入一个对话框,默认情况下,无论你是否在代码中使用了这个对话框,
他都会被编译到EXE中(验证方法:比较对话框加入前后产生的EXE),现在的问题是如何设定
编译选项,才能使得未使用的资源(如当前提及到的对话框),不被编译到EXE中。

解决方案 »

  1.   

    ...
    不被编译到EXE里,那放在哪?放在一个DLL里吧?那算是另一个工程了
      

  2.   

    "使得未使用的资源(如当前提及到的对话框),不被编译到EXE中。 "写个纯资源的DLL吧,《Windows程序设计》书上有。
      

  3.   

    编译器还没有这个聪明,如何就知道你没有使用呢?从 Windows API 层面讲,FindResource 可能会用到,但参数必须是查找对话框资源,而不是其他资源。代码是自由的,就算是查到了,用户不用来显示还是另一回事。CreateDialog 系列或 DialogBox 系列函数,还必须知道参数指定的是对话框模版还是名称。本身资源编译器和 C++ 编译器就是独立的程序,你还想让它们实现这个高级判断代码中是否有使用该对话框资源的功能,几乎是不可能的。
      

  4.   

    感谢楼上各位的关注,针对导入到Project中的Dialog而言,可以通过属性设定有效条件,即
    是否参与编译。
      

  5.   

    写个纯资源的DLL这个方法我也用,但是不是楼主的需求。资源DLL也需要自己整理,与原来的RC文件没有区别