C++类封装成DLL动态链接库

最近在进行OSG开发,想将里面模型导入部分重复使用的代码封装成DLL,这样后续不需要重复编写这部分代码。而C++类封装成DLL步骤如下:

1、 VS2015新建一个Win32项目,应用程序类型选择DLL

2、新建DLL项目后,项目解决方案文件结构如下:

3、配置OSG库

因为DLL使用到了osg库,所以项目首先要配置osg库,如下:

4、打开OSG.h头文件,进行代码编写修改

在头文件中加入OSG库的相关头文件,并且在类中进行函数和变量的声明,头文件如下(标红部分为添加代码):

5、在源文件中OSG.cpp中,添加类的函数相应的实现,如下(标红部分为添加代码):

6、在VS2015中按F7(生成解决方案)

如果编译成功,则输出如下

如果是在Debug环境下编译的,则在Debug目录下会生成DLL文件和lib文件;Release环境下同理。另外,如果封装后的DLL是在x64环境下的项目使用,则此处需要在Debug下的x64环境下生成。

7、分别在VS2015的项目相应位置配置OSG.h、OSG.lib、OSG.dll三个文件,我们就能使用封装类的方法了(参看笔记:VS的可执行文件目录、包含目录、库目录、附加包含目录、附加库目录、附加依赖项的解释和区别)。

PS:在编译成功生成DLL项目有,按Ctrl+F5 不调试执行,提示如下错误:

原因:

因为该DLL封装项目不是可执行项目,运行不了的。只要编译成功后,就完成了DLL的封装。

原文地址:https://www.cnblogs.com/zcmacbeth/p/eee22b92-1f2d-4a43-9ed8-ca75ff61544b.html

时间: 2024-08-29 04:21:36

C++类封装成DLL动态链接库的相关文章

C# 中如何将一个类文件(XX.CS)封装成.dll文件

C# 中如何将一个类文件(XX.CS)封装成.dll文件 Visual Studio Tools------> Visual Studio 2010命令提示 输入以下命令:csc /t:library /out:c:\XXX.dll c:\XXX.cs 其中c:\XXX.cs 为要生成的cs文件:c:\XXX.dll为生成的dll文件

C#封装成DLL,并在C#中调用

一.C#封装成DLL 1.在VS中创建项目选择类库,命名 myDll 2.建立好项目后自动生成的代码如下: 代码修改如下,添加自己要封装的C#代码,注意修饰符必须为public using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace myDLL { public class Class1 { //封装的DLL函数 public int add(int x, in

C#.NET常见问题(FAQ)-如何把写好的类编译成dll文件

1 新建一个类库项目 ? 2 直接改写这个Class1.cs文件 ? 3 记得要添加Windows.Forms引用 ? 4 我直接把在别的项目中做好的cs文件搞到这里来,连文件名也改了(FilesDirectory.cs),这里using System.Windows.Forms不会报错,因为前面已经添加引用了. ? 5 右击项目,在属性中可以修改生成dll的名称. ? 6 按F6进行编译,得到dll文件. ? 7 切记你自己写的类前面要有public,否则后面使用的时候会报错说访问受保护. ?

把jQuery的类、插件封装成seajs的模块的方法

这篇文章主要介绍了把jQuery的类.插件封装成seajs的模块的方法,需要的朋友可以参考下 注:本文使用的seajs版本是2.1.1 一.把Jquery封装成seajs的模块 define(function () { //这里放置jquery代码 把你喜欢的jquery版本放进来就好了 return $.noConflict(); }); 调用方法: 这样引进就可以像以前一样使用jquery define(function (require, exports, module) { var $

[Windows问题-3] C#转换成DLL文件

问题:这篇文章主要分为两部分,第一部分介绍如何将一个C#程序文件转换成DLL动态链接库文件,第二部分介绍如何在程序中使用这个生成的DLL文件. 第一部分: 1.首先新建一个C#文件"show.cs",这个文件就是我们需要转换成DLL文件的源文件.文件具体内容如下: using System; namespace Dll { public class Show { public String hello = "hello world\n"; public String

将FormView视图封装到DLL中

在多文档编程框架中,要显示多个视图,如果将视图类封装到DLL中,调用时将视图嵌入到主框架中,能实现模块编程. (1)创建一个MFC的控展DLL工程,在资源中添加一个FormView窗口,并创建相应的类CDeviceManageView.添导出函数如下: extern "C" AFX_EXT_API UINT Create(CRuntimeClass * * view,CWnd * p) { new CDynLinkLibrary(DeviceManageDLL); *view = RU

structs2 jsp页面参数封装成类传递到action

中途切入一个系统的维护,而我又是菜鸟. 系统要实现从前端jsp页面输入查询条件,传入后台action进行处理.根据原来的系统本身的代码大概明白是jsp里ognl表达式传参数过去,但是一直不成功.百度各种办法,找到下面方法都试过,好像都不行.找耳挠腮搞半天才发现,我ognl表达式里的值得大小写和action里的类实例名不一致,真是不能更二咯-.- 对齐了jsp里的ognl表达式和action里的类实例名后,问题解决了.把我搜到的structs2 jsp传参数到后台action的方法记录下来,抄一遍

为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?

既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了? Hibernate操作的步骤如下: 1. 获得Configuration对象 2. 创建SessionFactory 3. 创建Session 4. 打开事务 5. 进行持久化操作.比如上面的添加用户操作 6. 提交事务 7. 发生异常,回滚事务

在DLL动态链接库中封装VCL的MDI子窗体

在DLL动态链接库中封装VCL的MDI子窗体不多说了,看代码就应该明白了,曾经我遇到的问题,现在放出来大家共享! 这里是工程文件的部分: 在DLL中封装MDI子窗体需要重写DLL入口函数,具体代码如下: var DllApp: TApplication;//定义保存原DLL的TApplication对象 DllScr: TScreen;//定义保存原DLL的TScreen对象 procedure UnProcDll(Reason: Integer); register;//重新定义DLL入口函数