前言

最近看了FreeSouth的几个视频对于他用的链接库导出类还是挺感兴趣的然后我就实现了下简单的Dll动态库操作+静态库,博主自己用的是vs2017编译的话用的x64位编译的。,自己之前找了半天都是32位的,操作其实都差不多,

区别:

动态库与静态库大致区别是动态,形式上动态库生成两个文件:LIB文件+DLL文件静态库就一个DLL文件
使用上动态库比静态库要慢效率低点,空间占用上动态库更加的小,我们需要实行效率高的话推荐静态库,做大项目占用内存小的话用动态库直接链接就好了。

动态库基本操作流程

首先我们新建个dll的项目

新建一个dll的cpp文件mydll.cpp

简单的a+b,动态库做函数简单来说就是在函数前加个_declspec(dllexport)
_declspec(dllexport) int add(int a, int b)
{return a + b;
}

选择属性,预编译头选择不用

然后编译一哈,刚开始我看到这个有点慌,其实没事的,查了下dll本身就不是应用程序,所以大家不必害怕,没有影响~

只要是输出为如下即可

查看我们的debug目录,两个文件有了dll+lib

新建空项目DLLUSE注意:编译器也要改为64位的

把得到的两个文件lib+dll添加到我们的空项目debug目录下(如果没有就先运行下空项目啥的就有了)

新建.cpp文件敲下调用代码
#include <iostream>
#include <Windows.h>//声明库
#pragma comment(lib,"DLL2.lib")
//声明,此函数要在dll导入
_declspec(dllexport) int add(int a, int b);int main()
{int a;printf("%d\n", add(1, 2));system("pause");return 0;
}
运行即大功告成

静态库调用类

大致清楚流程后,我们就开始自己的osg静态库啦~
先创建osg的静态库,NodeMatrix


生成一个类干脆也叫NodeMatrix了
然后静态库向链接osg一样的操作把头文件相关的DLL都整上不懂的可以去看我的OSG环境配置一样的
下面贴出代码关键的部分[文章比较长就不放出来了,有需要的话可以找我要]
大致就是原来怎么写就怎么写,但是这个添加类有一点点区别,这里我出了什么GL.h提示错误后面检查了,只需要在头文件添加#include <windows.h>就好
但是

#include <Windows.h>
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osgGA/GUIEventAdapter>
#include <osgViewer/ViewerEventHandlers>
#include <osg/AnimationPath>
#include <iostream>
#include <osg/MatrixTransform>
#include <osg/PositionAttitudeTransform>
#include <osg/Matrixd>#ifdef NODE_MATRIX #else
#define NODE_MATRIX __declspec(dllimport)
#endifclass NODE_MATRIX NodeMatrix : public osg::MatrixTransform//区别在这
{

另外链接器的地方在DLL中不一样了在项目=>>属性=>>库管理=>>常规=>添加附加依赖项即可

使用

在我们需要的工程下:
1.添加NodeMartix工程的头文件目录:工程—属性—配置属性—c/c+±–常规—附加包含目录:加上头文件存放目录
2.添加文件引用的lib静态库路径:工程—属性—配置属性—链接器—常规—附加库目录:加上lib文件存放目录。
3.然后添加工程引用的lib文件名:工程—属性—配置属性—链接器—输入—附加依赖项:加上lib文件名
在我们使用的.cpp中添加
如果你用这个方法就需要

#include "../NodeMatrix/NodeMatrix.h"

放到Debug文件下就可以直接include文件就好了
好了至此动静态链接操作完毕

参考文章

静态链接
动态链接

OSG_64位动态链接库+静态链接库的使用相关推荐

  1. linux 静态编译多媒体框架,Go编译32位GNU静态链接库的方法

    Go链接库系统的难用可谓是人尽皆知,不同Go版本编译出来的不兼容,而且只支持GNU的,不能编译出Windows上的dll和lib. 本次有需求是将Go代码编译成32位GNU静态链接库. Go代码 编写 ...

  2. 【基础】动态链接库/静态链接库的区别

    一.静态链接库与动态链接库的简介 C或C++程序从源文件到生成可执行文件需经历 4 个阶段 分别为预处理.编译.汇编和链接. 链接阶段所要完成的工作,是将同一项目中各源文件生成的目标文件和程序中用到的 ...

  3. Visual Studio如何实现.exe免安装免DLL运行[动态链接库--->>>静态链接库]

    Visual Studio如何实现.exe免安装免DLL运行[动态链接库--->>>静态链接库] 前言 一. 什么是程序库? 1. 静态库: 2. 动态库: 3. 两者区别: 二. ...

  4. MFC模块的动态链接库DLL以及静态链接库LIB编译后的调用

    静态链接库LIB和动态链接库DLL的区别,创建和示例   1.什么是静态连接库,什么是动态链接库   静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都 ...

  5. 静态链接库与动态链接库

    1.什么是静态连接库,什么是动态链接库 静态链接库用通俗的话讲,静态库就是将代码编译到一个二进制文件下(通常扩展名为.LIB).然后客户端调用程序,只需要包含相关的.h文件及LIB库文件一起链接到ex ...

  6. 静态链接库LIB和动态链接库DLL的区别 创建和示例

    1.什么是静态连接库,什么是动态链接库   静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意, lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了. 但是若使 ...

  7. 生成静态链接库和动态链接库

    生成静态链接库和动态链接库 1.静态链接库 首先要生成.o文件 g++ -c test.cpp 然后就生成.a文件就行了 ar -r libtest.a test.o 如此一来我们就生成了静态链接库l ...

  8. VC的静态链接库 动态链接库

    1.什么是静态连接库,什么是动态链接库         静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了. ...

  9. 动态链接库dll,静态链接库lib, 导入库lib 转

    动态链接库dll,静态链接库lib, 导入库lib 在用VS编译工程的时候,我们会选择动态链接库dll,静态链接库lib(static library),可是为什么在编译动态链接库的时候也可以指定输出 ...

最新文章

  1. python中安装一个第三方库的命令格式是-PyCharm 如何安装python第三方库及插件
  2. Fishe向量Fisher Vecotr(二)
  3. Linux下mp3文件的乱码问题
  4. Avalonia跨平台入门第八篇之控件的拖放
  5. C语言写数据库(三)
  6. sharepoint文档库文档版本信息操作
  7. 提供基于transformer的pipeline、准确率达SOTA
  8. oracle字段属性设置下拉列表,下拉列表 select-option ; select-optgroup-option
  9. Sensoro告诉你ibeacon为什么这么火?
  10. win10电脑桌面透明便签_Windows xp电脑便签在哪里找?XP系统怎么建桌面便签
  11. JAVA的序列化不得不说的事
  12. Unity下载安装教程
  13. 谷歌浏览器、Yandex浏览器使用体验分享
  14. 视频编解码(三):H265编码器
  15. 面试时候被问到为什么离职 离职原因 该如何回答?
  16. net空间一次购买终身使用_西部数码使用指南:如何选择合适的虚拟主机
  17. Python库collections中的计数器(Counter)
  18. 音频转化mp3 ,到底选vbr还是cbr
  19. python中对数字降序和升序_该程序查找在Python中按升序或降序排列数字的最低成本...
  20. 数字档案管理系统解决方案 - 数字化档案建设方案

热门文章

  1. 【力扣】【初级算法】【数组10】有效的数独
  2. 实验4-1-4 求整数的位数及各位数字之和 (15分)(想象成剥洋葱)
  3. php 汉王云名片_风吹雨名片互赞系统PHP程序
  4. 利用python对gif图片进行压缩处理,简单案例
  5. 独家爆料:创宇云与小鸟云的故事
  6. HBuilder将项目生成安卓手机app
  7. 如何设置国际PayPal
  8. 【Kaggle】 Russia房产价格预测top1%(22/3270)方案总结
  9. 基于Excel模板导出——ExcelTemplate
  10. 每日一课 | 数据分析的本质是什么?