`
阿尔萨斯
  • 浏览: 4166970 次
社区版块
存档分类
最新评论

VC根据第三方提供的xxx.dll,xxx.lib,xxx.h调用动态库

 
阅读更多

首先要理解以下概念:

*.obj:是c/c++对应的二进制代码格式,是未经重定位的;
*.lib:是若干个obj的集合,本质与obj相同;
*.dll:是可实际运行的二进制代码,重定位的代码;
*.h:是c/c++头文件,当#include时会把包含的文件的内容在c/c++源文件中展开。

(一)静态调用如下:

1)xxx.dll拷到工程目录(不是解决方案目录,是和Debug和Release平级的目录)下;

2)把xxx.lib拷到工程目录下;

3)把xxx.h拷到工程目录下;

4)依次项目->属性->配置属性->链接器->输入,在附加依赖项中输入xxx.lib;

5)在工程的xxx.c或者xxx.cpp文件中引入xxx.h 就OK了。

(二)动态调用如下:

1)xxx.dll拷到工程目录(不是解决方案目录,是和Debug和Release平级的目录)下;

2)在c/c++源文件中添加include <windows.h>

{
  HINSTANCE myLib = LoadLibrary("xxx.dll");
  if(myLib)
  {
    typedef int (*Fun)(int,int);//参数与返回值都为int类型
    MYFUNC funcAlias = NULL; // 函数别名
    funcAlias= (Fun)GetProcAddress(myLib,"funcName");//funcName是DLL中声明的函数名
    if(funcAlias)
   {  
     funcAlias(param1,param2);
  }
   FreeLibrary(myLib);
 }

}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics