打开VS2008创建项目如下:

选择静态库

创建文件

// add.h
#ifndef _ADD_H_
#define _ADD_H_#include #ifdef __cplusplus
extern "C" {
#endif__declspec(dllexport) int myAdd(int a, int b);#ifdef __cplusplus
}
#endif#endif // add.cpp
# include "add.h"int myAdd(int a, int b){printf("调用自己的---静---态库函数!\n");return a + b;
}编译生成静态库

新创建一个WIN32的控制台程序,将上面生产的libadd.lib库跟add.h拷贝到新创建的项目目录下

新建项目添加头文件目录

添加静态库引用目录

添加静态库引用

编译运行测试

将配置调用的第3、4步去掉,调用#pragma comment(lib, "库路径")函数调用库函数

跟创建静态库步骤基本一致,创建时选项选择DLL

代码跟静态库代码一致,打印稍作区分,将“静”改为“动”

编译运行生成动态库

新创建一个WIN32的控制台程序,将上面生产的dlladd.lib、dlladd.dll库跟add.h拷贝到新创建的项目目录下(dlladd.lib、dlladd.dll拷贝到lib下)
跟静态库的配置基本一样
编译和运行

这是因为运行时找不到动态库,将动态库拷贝到exe生成的目录下

函数调用链接器下面两个地方的配置是不需要的,但引用目录需要配置

main函数代码如下
#include
#include "add.h"
typedef int (* ptrfunc)(int a, int b);int main() {ptrfunc addFun;HINSTANCE hDll = LoadLibrary(L"G:\\libProject\\test_main\\lib\\dlladd.dll"); if(hDll == NULL) {printf("LoadLibrary return error : %d\n", (int)GetLastError());return -1;}addFun = (ptrfunc)GetProcAddress(hDll, "myAdd");if (addFun == NULL){printf("GetProcAddress return error : %d\n", (int)GetLastError());}int result = addFun(2, 3);printf("2 + 3 = %d\n", result);FreeLibrary(hDll);return 0;
} 编译和运行
上一篇:常用排序算法