1)在VC++中如何创建一个EXE和一个DLL,使得EXE调用DLL的函数,或者EXE使用DLL中的变量和类? 请写出操作步骤和原理。
2)如果开发小组中一个人负责编写EXE,令一个人负责编写DLL,两人之间需要什么基本开发约定? (例如,源代码共享的操作规范、一些基本的注意事项。)
3)什么叫Windows程序模块间“二进制接口”(Binary Interface)? 请说出二进制接口的优点。
2)如果开发小组中一个人负责编写EXE,令一个人负责编写DLL,两人之间需要什么基本开发约定? (例如,源代码共享的操作规范、一些基本的注意事项。)
3)什么叫Windows程序模块间“二进制接口”(Binary Interface)? 请说出二进制接口的优点。
2.函数定义,输入,输出等
3.就是com,信息隐藏
COM和DLL的注意基本一样
用
__declspec(dllexport)
输出你的类(或结构)
用
__declspec(dllexport)
输出你的类(或结构)注意是exe里有变量。照你这样,岂不是exe程序又得做成dll
如果exe程序里有自定义类型的变量,而dll里又需引用时,该怎么办?你这样的设计肯定有问题,
1.dll中也定义这个自定义变量
2.把这个变量封装成一个单独的dll,然后你的exe和另一个dll调用封装了这个变量的dll
如果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<签名>
第二个方法可以试一下。
但第一个方法中,你怎么将exe文件包含到dll工程中呢?
第二:任何数据类型都可以,只是在Exe和Dll里都要有数据类型的定义,要不然编译都通不过。 jmcooler<签名>