1)在VC++中如何创建一个EXE和一个DLL,使得EXE调用DLL的函数,或者EXE使用DLL中的变量和类? 请写出操作步骤和原理。
2)如果开发小组中一个人负责编写EXE,令一个人负责编写DLL,两人之间需要什么基本开发约定? (例如,源代码共享的操作规范、一些基本的注意事项。)
3)什么叫Windows程序模块间“二进制接口”(Binary Interface)? 请说出二进制接口的优点。

解决方案 »

  1.   

    1.dll写好后,把.h文件给exe,然后exe代码引用dll的lib,然后加入dll的头文件,就可以用dll中的函数了
    2.函数定义,输入,输出等
    3.就是com,信息隐藏
      

  2.   

    UP说得很好!
    COM和DLL的注意基本一样
      

  3.   

    如果exe程序里有自定义类型的变量,而dll里又需引用时,该怎么办?
      

  4.   

    如果exe程序里有自定义类型的变量,而dll里又需引用时,该怎么办?

    __declspec(dllexport)
    输出你的类(或结构)
      

  5.   

    如果exe程序里有自定义类型的变量,而dll里又需引用时,该怎么办?

    __declspec(dllexport)
    输出你的类(或结构)注意是exe里有变量。照你这样,岂不是exe程序又得做成dll
      

  6.   


    如果exe程序里有自定义类型的变量,而dll里又需引用时,该怎么办?你这样的设计肯定有问题,
    1.dll中也定义这个自定义变量
    2.把这个变量封装成一个单独的dll,然后你的exe和另一个dll调用封装了这个变量的dll
      

  7.   

    我个人认为
    如果exe程序里有自定义类型的变量,而dll里又需引用时
    是程序结构不合理
      

  8.   

    谢谢各位。javanew说的有些启发
      

  9.   

    同意VisualStudio(嗷~~~),这样是程序没有规划好
      

  10.   

    对呀。dll作用就是将一定的代码进行封装。当然dll就是为exe服务的。所以,只有dll导出函数,变量,类,才是合理的结构.
      

  11.   

    果exe程序里有自定义类型的变量,而dll里又需引用时,该怎么办?我的方法有多种:
    1、在Exe里用__declspec(dllexport)输出变量,而在Dll里用__declspec(dllimport)引入这个变量。Exe不必要做成Dll,一个模块,无论是Dll还是Exe都能输出变量、函数、类等。
    2、假定这个变量是整型,比如在Exe里有: int g_MyVar;
    然后可以在Dll里定义一个接口函数 void SetVarValue( int* pIVar );
    Exe里调用SetVarValue将g_MyVar的指针传给Dll,然后Dll里保存这个指针。这是可行的,因为Dll和Exe是同一个进程空间,可以相互引用内存。
    3、既然Dll和Exe都要引用这个变量,何尚不可以就在Dll里定义这个变量,然后输出呢?
         jmcooler<签名>
      

  12.   

    to :jamcooler
    第二个方法可以试一下。
    但第一个方法中,你怎么将exe文件包含到dll工程中呢?
      

  13.   

    还有我要的变量是自定义的,或是结构,或是链表,不一定是标准类型。用第二种方法不知是否可行。比如,如果是一个结构,是否在exe里定义一次,在dll还要再定义一次呢?
      

  14.   

    第一:Dll的编译不会有什么问题。这就可以了。
    第二:任何数据类型都可以,只是在Exe和Dll里都要有数据类型的定义,要不然编译都通不过。     jmcooler<签名>
      

  15.   

    jmcooler说得很好.其实这样的设计本身就有问题,做程序一定记住尽量少用交错的引用,否则代码容易出错,而且读起来也困难.虽然我们在数据结构中学了许多图这类的东东,但实际工作中,一般用树已经足够了.交错用多了只能说是设计的不科学.