C++程序封装为动态链接库(dll文件)及使用

本文介绍了如何将C++程序打包成动态链接库(DLL),以便他人只能通过预设的接口函数来使用功能,而不访问具体实现代码。主要步骤包括在VS中创建DLL项目,添加源文件,定义导出函数,实现函数,调试生成DLL和LIB文件,以及在新项目中引用和使用这些文件。
摘要由CSDN通过智能技术生成

       把C++程序打包为动态链接库(dll文件)给别人,这样别人只能通过我们定义的接口函数实现程序的功能,而无法知道程序的具体实现代码。

一、将C++程序封装为动态链接库

VS 新建一个“动态链接库(DLL)”(此处命名为:Dll1,保存路径:E:\DllProject )项目后:
     1)将C++程序所有使用到的.h头文件、.cpp源文件复制到该“动态链接库(DLL)”项目的文件夹中(路径:E:\DllProject\Dll1\Dll1);
     2)手动添加所有的.h头文件和.cpp源文件;

     在VS界面的解决方案资源管理器中,右击Header Files—>添加—>现有项,使用Ctrl键即可一次添加所有需要的.h头文件,同理添加.cpp源文件)。


     3)在其pch.h文件,加入以下语句:

#ifdef IMPORT_DLL
#else
#define IMPORT_DLL extern "C" _declspec(dllexport)
#endif

IMPORT_DLL int myfun(double* Param, int Flag); 
//此句根据自己需要修改接口函数, 此处举例为:int myfun(double* Param, int Flag)

     4)在其pch.cpp文件,编写函数 myfun(double* Param, int Flag) 的具体实现程序,例如:

#include <math>
#include <iostream>
#include <fstream>
using namespace std;

int myfun(double* Param, int Flag)
{
     ifstream in_file("input.txt");
     if(!in_file)
     {
         cerr<< "oops!\n";
         return -1;
     }
     FILE *fp;
     fp=fopen(".\\outfile\\Tra.dat","w");
     setbuf(fp,NULL);
     fprintf(fp,"t/s\tX/m\tY/m\tZ/m",Flag,Param[0],Param[1],Param[2]);
     fflush(fp);
     fclose(fp);
     return 0;
}

     5)调试(查看输出栏,显示生成成功即可,提醒 “不是有效win32程序” 没关系);
        自动生成 .dll 文件和 .lib文件(此处所在路径:E:\DllProject\Dll1\X64\Debug);

     6)将所有.h头文件、 .dll 文件和 .lib文件及其他需要的文件夹(例如,运行程序需使用到的input.txt文本文件、输出数据文件夹Out files等),复制打包到"TraSolve"文件夹。注意不需要.cpp源文件。

二、使用封装好的动态链接库(dll文件)

VS新建一个“空项目”(此处命名为:project1,假如保存路径:E:\DllProject )后:
    1)复制上面打包的"TraSolve"文件夹下的全部文件到“project1”项目的文件夹(路径:E:\DllProject\project1\project1);
       "TraSolve"文件夹中一般有以下4类:
       (1).h头文件
       (2).dll资源文件
       (3).lib资源文件
       (4)其他
    2)手动添加步骤1中所有的.h头文件和.dll、.lib资源文件,添加方法同上;
    3)右击 "源文件" 新建一个.cpp文件,并编写int main(){ ... ... }函数:

#include "pch.h"
#include "stdio.h"
int main()
{
    //通过上面定义的接口函数 myfun(double* , int, ... ) 调用被封装的C++程序
    //(调用格式见 pch.h 文件);
}

    4)配置属性—>VC++ 目录—>库目录,选择为.dll文件所在文件夹路径(如:E:\DllProject\project1\project1);
    5)配置属性—>链接器—>输入—>附加依赖项,添加.lib文件名及后缀(如: Dll1.lib);
    6)运行即可。

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态链接库DLL)是在Windows操作系统中广泛使用的一种可执行文件格式,它包含了可重用的代码和数据,可以被多个程序共享和调用。通过将一些常用功能封装DLL中,可以简化程序开发和维护工作,提高代码的复用性。 在Visual C++中进行DLL编程可以通过使用动态链接库项目模板来创建和开发。首先,我们需要定义并导出需要在DLL使用的函数和数据。在函数定义前加上__declspec(dllexport)修饰符可以将其导出为DLL中的可用接口。导出的函数可以在其他程序使用,来实现相关功能。 其次,必须在DLL项目的配置属性中指定相应的选项。需要设置输出类型为动态链接库,同时选择合适的平台和工具集。可以指定DLL的输出文件名和路径,以及其他编译和链接选项。 在DLL编程中,可以使用静态链接或动态链接的方式进行函数调用。在静态链接中,函数在编译时被复制到程序中,因此程序的大小会增加。而在动态链接中,调用函数时会在运行时从DLL中加载,并且可以在系统中共享,减小了程序的体积。 DLL编程还常用于插件开发。插件是一种独立的功能模块,可以在程序运行时通过加载DLL来扩展功能。这样,程序的功能可以灵活地进行扩展和更新,提高了可定制性和可维护性。 总结来说,深入浅出Visual C++ DLL编程是通过使用动态链接库项目模板在Windows操作系统中创建和开发可重用的代码和数据。使用DLL可以简化程序开发和维护工作,提高代码复用性。通过在DLL中定义和导出函数和数据,可以在其他程序使用来实现相关功能。DLL编程适用于静态链接和动态链接方式进行函数调用,常用于插件开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值