我很不喜欢DLL的隐式调用,那和用LIB有什么区别
-------------------------------------------------------------------------
#include<iostream>
#include<windows.h>
typedef int (*AddFunc)(int,int);
int main(){
AddFunc _AddFunc; //函数指针
HINSTANCE InstLib = LoadLibrary("dlltest2.dll"); //加载函数,失败返回NULL,成功返回句柄
if(InstLib == NULL){
std::cout<<"打开失败";
FreeLibrary(InstLib);//即使打开失败也要释放
}
_AddFunc=(AddFunc)GetProcAddress(InstLib, "add");
if(_AddFunc==NULL){
std::cout<<"打开失败,错误代码:"<<GetLastError();
FreeLibrary(InstLib);//即使打开失败也要释放
}
std::cout<<(_AddFunc)(1,4);//像用函数一样的使用他
FreeLibrary(InstLib);
return 0;
}
当然,如果是发布出去的lib那还是随着.h,因为用户可不喜欢用函数指针。