C++ 库链接
0. 动态库和静态库
静态库: 函数和数据被编译进一个二进制文件(扩展名为.lib),在使用静态库的情况下,在编译链接可执行文件时
,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建最终的可执行文件(.exe)
动态库: 有两个文件,一个是引入库.lib和一个dll,引入库包含被dll导出的函数的变量的符号名,dll包含实际的函数和数据,
在编译链接器可执行文件时,只需要链接引入库,dll中函数代码和数据并不复制到可执行文件中,在运行时,再去加载dll,访问dll中导出的函数。
1. Windows Virual Studio 引用静态链接库的若干种方式?
第一种:
点击右键打开项目属性,VC++项目中找到库目录,把.lib的路径添加进去
然后在链接器-->输入-->附加依赖项 加入static.lib
第二种:
#pragma comment (lib,"path/to/lib/static.lib")
2. 动态链接库的核心代码
#ifdef CREATEOPENCLDLL_EXPORTS
#define CREATEOPENCLDLL_API __declspec(dllexport)
#else
#define CREATEOPENCLDLL_API __declspec(dllimport)
#endif
extern "C"
{
CREATEOPENCLDLL_API CreateOpenCLDLL* GetCreateOpenCLDLL(void);
typedef CreateOpenCLDLL* (*PFNGetCreateOpenCLDLL)(void);
}