动态库加载方法及问题
在VC中两种方式的具体方法:
一、动态库的隐示调用:
在 VC 工程中直接链接静态输入库XXX.lib,然后即可像调用其它源文件中
的函数一样调用DLL中的函数了。
二、动态库的显式调用:
显式调用动态库步骤:
1、创建一个函数指针,其指针数据类型要与调用的 DLL 引出函数相吻
合。
2、通过 Win32 API 函数LoadLibrary()显式的调用DLL,此函数返回
DLL 的实例句柄。
3、通过 Win32 API 函数GetProcAddress()获取要调用的DLL 的函数地
址,把结果赋给自定义函数的指针类型。
4、使用函数指针来调用 DLL 函数。
5、最后调用完成后,通过 Win32 API 函数FreeLibrary()释放DLL 函数。
问题:
1.C/C++ 的默认调用约定是__cdecl(即c语言缺省调用)
2.使用隐式方式调用动态库时,注意 调用者和被调用者的调用约定要一致.
统一用__cdecl或__stdcall
3.VC下设置调用约定的路径是:
Project->Settings->C/C++->category->Codegeneration->Calling convertion