正在加载图片...
Loadlibra(函数的参数是所调用的DL的名字,这个名字不是放入 输入库文件中的名字,而是DL的文件名。如果文件的扩展名为DL, 则可以省略。 注意:我们使用显式链接的应用程序刚运行时,所调用的DLL并不运 行,只有当应用程序调用 Loadlibrayo时系统才加载相应的DL运行,并 在应用程序调用 Freelibrary(时卸载该DLL。我们在使用隐含链接的应 用程序时调用DLL中的导出函数,方法同调用一般的函数一样,而使用 显式链接的应用程序必须使用指针来调用。由于使用了指针,因此在编 译时不能验证参数的合法性,通过指针使用不合法的参数来调用DLL中 的导出函数将会导致不可预料的后果。 很明显,使用隐含链接的方式调用DL中的导出函数要比使用显式 链接方便得多。但在某些情况下我们必须使用显式链接。事实上,使用 显式链接调用DLL提供了更大的灵活性。尤其在没有与DLL相对应的 LB文件时,我们只能使用显式链接来调用DLL中的导出函数,并且, 只要我们使用函数名作参数来调用 Get Address9),在更新DLL时,就 没有必要重新链接应用程序。另外,使用隐含链接的方式的应用程序加 载DL时如果发生错误(如DL文件未找到或是DL中的 DImAin0函数 初始化失败)时,应用程序将被终止,而使用显式链接的应用程序则可 以使用如上面的例子中所给出的方法来避免出现这种情况。LoadLibrary()函数的参数是所调用的DLL的名字,这个名字不是放入 输入库文件中的名字,而是DLL的文件名。如果文件的扩展名为.DLL, 则可以省略。 注意:我们使用显式链接的应用程序刚运行时,所调用的DLL并不运 行,只有当应用程序调用LoadLibray()时系统才加载相应的DLL运行,并 在应用程序调用FreeLibrary()时卸载该DLL。我们在使用隐含链接的应 用程序时调用DLL中的导出函数,方法同调用一般的函数一样,而使用 显式链接的应用程序必须使用指针来调用。由于使用了指针,因此在编 译时不能验证参数的合法性,通过指针使用不合法的参数来调用DLL中 的导出函数将会导致不可预料的后果。 很明显,使用隐含链接的方式调用DLL中的导出函数要比使用显式 链接方便得多。但在某些情况下我们必须使用显式链接。事实上,使用 显式链接调用DLL提供了更大的灵活性。尤其在没有与DLL相对应的 LIB文件时,我们只能使用显式链接来调用DLL中的导出函数,并且, 只要我们使用函数名作参数来调用GetProcAddress(),在更新DLL时,就 没有必要重新链接应用程序。另外,使用隐含链接的方式的应用程序加 载DLL时如果发生错误(如DLL文件未找到或是DLL中的DllMain()函数 初始化失败)时,应用程序将被终止,而使用显式链接的应用程序则可 以使用如上面的例子中所给出的方法来避免出现这种情况
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有