VS编译动态链接库--小结
来源:互联网 发布:uml类图转化为java代码 编辑:程序博客网 时间:2024/06/05 06:09
今天编译/调用一个动态库折腾了很久。明明lib/dll编译成功了,但是被调用时,死活都报“函数符号找不到的”的错误。检查了好几遍lib/h文件路径设置是否ok,有无正确引用。都没有问题。来回折腾了我2个小时,最后发现原因是:导出函数定义和声明的规格不一致。为了避免犯这种低级小错误,在这里对VS编译动态库,编译的2种方法和注意事项,备忘一下。
为了能被其他程序正确调用链接,需要编译出dll动态库和相应的lib符合文件。有两种方法:
1/ 配置def文件:(linker-》input-》module define file)。
def可以同时输出dll和lib,但是dllexport方式,对C函数,经常只有dll无法生成lib,对导出类,dllexport可以生成dll和lib。
DLL中导出函数的两种方式(dllexport与.def文件):http://blog.csdn.net/lostyears/article/details/8482638
动态链接库全面浅析(一)-----Win32 动态链接库:http://blog.csdn.net/zhaodan19861107/article/details/7919359
2/关键字_declspec(dllexport)显示声明:
动态链接库导出C++类:http://blog.csdn.net/talentluke/article/details/6438049
头文件:
#ifdef _CLASSINDLL
#define CLASSINDLL_CLASS_DECL __declspec(dllexport)
#else
#define CLASSINDLL_CLASS_DECL __declspec(dllimport)
#endif
//将类声明改为:
class CLASSINDLL_CLASS_DECL CInDLL
cpp文件:在实现这个类的CPP文件的顶部加入#define _CLASSINDLL语句,然后include头文件。
#define _CLASSINDLL
#include "CInDLL.h"
这样一来在使用这个类时就可以不做任何改动了。我上面犯的错误正是因为函数实现cpp中没有包含对外头文件。- VS编译动态链接库--小结
- VS编译动态链接库--小结
- 动态链接库小结
- 动态链接库小结
- 动态链接库小结
- vs编译live555为静态链接库和动态链接库
- vs动态链接库项目
- 编译动态链接库
- 链接动态库vs链接静态库
- 静态链接库 VS 动态链接库
- 静态链接库 VS 动态链接库
- 动态链接库vs静态链接库
- 静态链接库vs动态链接库
- 动态、静态链接库小结
- 静态编译,动态编译,静态链接库,动态链接库
- 动态链接库的编译链接
- 命令行下编译链接动态链接库
- linux 编译,链接,动态链接库
- C++运算符重载
- 安卓两个Activity切换时Activity的生命周期
- epoll的两种触发模式ET和LT
- ARM内核全解析,从ARM7,ARM9到Cortex-A7,A8....Cortex-A53,A57,A72
- 总结&备忘:hibernate实体类打包在JAR时不能被加载
- VS编译动态链接库--小结
- C++ 排序函数 sort(),qsort()的用法 附加.str()用法
- 题目:中序遍历和后序遍历树构造二叉树
- 关于用eclipse导入项目后提示gen already exists but is not a source folder的错误
- qt超强绘图控件qwt - 安装及配置
- Linux内核源码分析方法
- 题目:主元素 II
- HTTP报文
- ANR 分析解决(一)