OSG_64位动态链接库+静态链接库的使用

前言

最近看了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)
#endif

class NODE_MATRIX NodeMatrix : public osg::MatrixTransform//区别在这
{

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

使用

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

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

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

参考文章

静态链接
动态链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值