vs2005 中建立一个mfc 的对话框项目,然后打开项目属性页,选 配置属性->常规,找到 配置类型,当前是应用程序(.exe) ,将下拉选为动态库(.Dll) ,然后编译通过,这个时候得到的这个dll 应该怎么调用?这个dll 是否有用??

解决方案 »

  1.   

    这样建立的对话框项目只能是Application(.exe),你设置为Dynamic Library (.dll),将使本程式不是Window程式而不可使用。应该也不会生成XXX.dll吧?
      

  2.   

    当然能用这个dll了,前提是你得导出函数.
    不导出函数什么都用不了
      

  3.   

    这样生成的dll在被LoadLibrary的时候与执行原来的exe是一样的,如果需要还可以再定义一些导出函数。
      

  4.   

    补充一下,上面说法不够准确。编译成dll之后,原本的exe程序入口变成了dll的attach和detach入口。但通常情况下编译生成的程序入口是VC的lib中的一个函数,该函数会进行判断,如果是dll,则只执行一些初始化的动作就返回了。如果在连接生成exe时通过/ENTRY参数把程序的入口点设为自己定义的一个函数,则编译成dll后,则LoadLibrary和FreeLibrary就会执行这个函数了。
      

  5.   

    LoadLibrary和FreeLibrary就会执行这个函数了。
      

  6.   

    /ENTRY 定义入口函数 这个方法从来没有试过?能否具体些?定义一个入口函数,并且调用这个dll ,具体怎么做?
      

  7.   

    你在程序中随便定义一个函数,例如
    extern "C" MyEntry()
    {
        MessageBox(NULL, "Hello", "Test", MB_OK);
    }
    然后在项目属性中设置连接器的命令行参数,在下面加上/ENTRY:MyEntry就可以了。这样编译出来的exe执行会显示出这个消息框然后退出。如果编译成dll,用另一个程序LoadLibrary这个dll,在Load和Free时也会显示这个消息框。