龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC++动态链接库(DLL)编程深入浅出(二)[组图](14)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
而在应用工程中没有定义DLL_FILE,故其包含point.h和circle.h后引入的类声明为: class _declspec(dllimport) point //导入类point { … } 和 class _declspec(dllimport) circle //导

  而在应用工程中没有定义DLL_FILE,故其包含point.h和circle.h后引入的类声明为:

class _declspec(dllimport) point //导入类point

{

}

  和

class _declspec(dllimport) circle //导入类circle

{

}

  不错,正是通过DLL中的

class _declspec(dllexport) class_name //导出类circle 

{

}

  与应用程序中的

class _declspec(dllimport) class_name //导入类

{

}

  匹对来完成类的导出和导入的!

  我们往往通过在类的声明头文件中用一个宏来决定使其编译为class _declspec(dllexport) class_name还是class _declspec(dllimport) class_name版本,这样就不再需要两个头文件。本程序中使用的是:

#ifdef DLL_FILE

class _declspec(dllexport) class_name //导出类

#else

class _declspec(dllimport) class_name //导入类

#endif

  实际上,在MFC DLL的讲解中,您将看到比这更简便的方法,而此处仅仅是为了说明_declspec(dllexport)与_declspec(dllimport)匹对的问题。

  由此可见,应用工程中几乎可以看到DLL中的一切,包括函数、变量以及类,这就是DLL所要提供的强大能力。只要DLL释放这些接口,应用程序使用它就将如同使用本工程中的程序一样!

  本章虽以VC++为平台讲解非MFC DLL,但是这些普遍的概念在其它语言及开发环境中也是相同的,其思维方式可以直接过渡。

精彩图集

赞助商链接