在VS中添加lib库的三种方法与DLL加载的四种方法 |
您所在的位置:网站首页 › dll文件和lib文件怎么调用 › 在VS中添加lib库的三种方法与DLL加载的四种方法 |
一.lib库加载方式 方法1: 通过设置工程配置来添加lib库. A、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。 B、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。 C、 然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。 这种方法比较繁琐,且不直观,而且还可能要争对debug版本和release版本作不同的配置,因为我们生成的两个版本的库可能放在不同的目录中的. 方法2: 使用编译语句: #ifdef _DEBUG #pragma comment(lib,"..\\debug\\LedCtrlBoard.lib") #else #pragma comment(lib,"..\\release\\LedCtrlBoard.lib") #endif 这种方法直观,方便,且可以按如上直接区分出Debug版本和Release版本的不同目录.当然,通过宏,还可以区分更多版本. 但是在指定目录时,不小心容易出错. 方法3: 直接添加库文件到工程中. 就像你添加.h和.cpp文件一样,把lib文件添加到工程文件列表中去. VC中,切换到"解决方案视图",--->选中要添加lib的工程-->点击右键-->"添加"-->"现有项"-->选择lib文件-->确定. 就是这么简单,搞定. 这个方法适用于在我的工程的debug版本和Release版本中都使用同一个lib库文件时.这样就省去了你1方法配置环境的繁琐,也省去了方法2种语句的可能性错误发生. 二.动态库加载方法 方法一:代码加载方法: LoadLibrary GetProcAddress FreeLibrary 示例: #include #include #pragma comment(lib, "DllLoad.lib") int main() { HINSTANCE h = LoadLibraryA("DllLoad.dll"); typedef int(*FunPtr)(int a, int b);//定义函数指针 if (h == NULL) { FreeLibrary(h); printf("load lib error\n"); } else { FunPtr funPtr = (FunPtr)GetProcAddress(h, "add"); if (funPtr != NULL) { int result = funPtr(8, 3); printf("8 + 3 =%d\n", result); } else { printf("get process error\n"); printf("%d", GetLastError()); } FreeLibrary(h); } return 0; } 方法二:把dll复制到工程的可执行文件(exe)所在的目录下,例如在Debug下编译,就复制到Debug目录下。 方法三:在系统的环境变量中添加该dll的路径。 方法四:添加项目调试环境中,项目->属性->调试->环境:输入path=包含dll文件的文件夹路径。 三.头文件方法一:如果include中的文件比较少,直接把include文件中的(.h)文件复制到项目中,然后直接导入到项目中。 方法二:如果include中的文件比较多,项目->属性->VC++目录->包含目录,添加上include文件夹的地址。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |