在VS中添加lib库的三种方法与DLL加载的四种方法

您所在的位置:网站首页 dll文件和lib文件怎么调用 在VS中添加lib库的三种方法与DLL加载的四种方法

在VS中添加lib库的三种方法与DLL加载的四种方法

2024-07-15 15:08| 来源: 网络整理| 查看: 265

一.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