C++创建和使用动态链接库

一个简单的动态链接库的生成和调用例子,太过简单,大神请绕道。

一、创建动态链接库

  1. 使用vs创建工程选择动态链接库。
  2. 在项目中创建源文件和头文件,并在文件中添加以下代码。
  3. 在头文件中添加以下代码
    // dlltest.h   头文件,使用动态链接库时需要包含头文件
    
    #pragma once
    #ifdef __DLLEXPORT
    #define __DLL_EXP _declspec(dllexport)    // 导出函数 - 生成dll文件时使用
    #else
    #define __DLL_EXP _declspec(dllimport)    // 导入函数 -使用dll是使用
    #endif // __DLLEXPORT
    
    // 判断是否是c++
    #if defined(__cplusplus)||defined(c_plusplus)
    extern "C"
    {
    #endif
     __DLL_EXP int add(int a, int b);
     __DLL_EXP int sub(int a, int b);
    
    #if defined(__cplusplus)||defined(c_plusplus)
    }
    #endif
  4. 在源文件文件中添加以下代码
    // dlltest.cpp
    
    #include<stdio.h>
    #include"dlltest.h"
    #include"pch.h"
    
     int add(int a, int b)
    {
     return a + b;
    }
    
     int sub(int a, int b)
    {
     return a - b;
    }
  5. 在工程属性,C/C++ => 预处理器 => 预处理定义 中添加预定义宏__DLLEXPORT.
  6. 在工程属性,C/C++ => 预编译头 => 预处编译头 选择不使用预编译头。
  7. 编译生成dll文件和lib文件(如果没有生成lib文件,需要在工程中添加一个Source.def文件,内容为LIBRARY)。

二、使用动态链接库

1. 使用c++调用动态链接库

  1. 新建一个c++工程,包含dlltest.h头文件,并引用生成的lib文件。
  2. 添加源文件testcpp.cpp,在源文件中输入以下代码:
    #include <iostream>
    #include"dlltest.h"
    
    int main()
    {
     printf("test cpp\n");
        std::cout << "Hello World!\n";
     printf("3+2 = %d\n", add(3, 2));
     printf("3-2 = %d\n", sub(3, 2));
    }
  3. 编译,运行即可调用上面生成的动态链接库。

2.使用c调用动态链接库

  1. 新建一个c语言工程,包含dlltest.h头文件,并引用生成的lib文件。
  2. 添加源文件testc.c,在源文件中输入以下代码:
    // testc.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //
    #include <stdio.h>
    #include "dlltest.h"
    
    int main()
    {
     printf("test c\n");
     printf("3+2 = %d\n", add(3, 2));
     printf("3-2 = %d\n", sub(3, 2));
    }
    
    
  3. 编译,运行即可调用上面生成的动态链接库。

原文地址:https://www.cnblogs.com/ay-a/p/10976801.html

时间: 2024-10-12 03:17:15

C++创建和使用动态链接库的相关文章

使用VS2015创建和使用动态链接库-图文详解

之前看过原创一篇<VS2010 动态库开发--第一章 演练:创建和使用动态链接库 (C++)>的帖子,地址是http://blog.sina.com.cn/s/blog_6fb3686501011ymn.html,感谢原创.这里我们使用VS2015创建和使用自己的动态链接库,配以图文详解. 我们先来演示如何使用VS2015创建一个动态链接库.1.新建一个"Win32控制台应用程序","名称"为MathFuncsDll,"解决方案名称"

演练:创建和使用动态链接库 (C++)

我们将创建的第一种类型的库是动态链接库 (DLL). 使用 DLL 是一种重用代码的绝佳方式. 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可. 本演练涵盖以下内容: 创建新的动态链接库 (DLL) 项目. 向动态链接库添加类. 创建引用动态链接库的应用程序. 在控制台应用程序中使用类库的功能. 运行应用程序. 系统必备 本主题假定您具备 C++ 语言的基础知识. 如果您是刚开始学习 C++,建议您参阅 Herb Schildt 编

【转载】创建和使用动态链接库 (C++)

原文:http://blog.csdn.net/handforcpp/article/details/3478254 也可参考MSDN: 演练:创建和使用动态链接库 (C++) 我们将创建的第一种类型的库是动态链接库 (DLL).使用 DLL 是一种重用代码的绝佳方式.您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可. 本演练涵盖以下内容: 创建新的动态链接库 (DLL) 项目. 向动态链接库添加类. 创建引用动态链接库的应用程序.

创建和使用动态链接库 (C++)

转载:http://msdn.microsoft.com/zh-cn/library/ms235636.aspx 此分步演练演示如何创建用于 C++ 应用的动态链接库 (DLL).使用库是重复使用代码的一种绝佳方式.与其在创建的每个程序中重新实现相同的例程,不如一次性编写它们,然后从需要该功能的应用中引用它们.通过将代码置入 DLL,可以节省引用它的每个应用中的空间,也可以更新该 DLL 而无需重新编译所有应用.有关 DLL 的详细信息,请参阅 Visual C++ 中的 DLL. 本演练涵盖以

vs2010创建和使用动态链接库(dll)

一.创建动态链接库项目: 1.打开Microsoft Visual Studio 2010,选择File->New->Project. 2.在New Project中选择Installed Templates->Visual C++->Win32. 3.选择Win32 Console Application,设置名称:simpledll,设置解决方案名:zdddll. 4.单击OK,在出现的Win32 Application Wizard的Overview对话框中点击Next. 5

Qt创建和使用动态链接库

一.创建共享库 1.新其他建项目,选择C++库 2.选择共享库,并取项目名称,单击下一步.这里取名位mylib 3.按默认配置单击下一步至模块选项,选择所需支持的模块.这里勾选Qtcore和QtGui. 4.直接下一步至完成.现在一个共享库的工程就新建好了. 5.右击项目添加新文件,选择Qt设计师界面,以便支持可视化界面设计. 6.进入可视化界面设计,修改objectName为Mylib 7.修改mylib.h文件,代码如下: [cpp] view plaincopyprint? #ifndef

如何为Android,Mac和Windows平台创建Java JNI动态链接库

Java Native Interface (JNI) 是Java和C/C++之间的桥梁.在一些情况下,为了提高Java程序的性能,扩展Java程序的功能,我们需要使用JNI.比如数据库的调用,当我们下载一个JDBC的jar包之后,解压可以看到里面包含了不同平台的动态链接库: 这篇文章介绍如何为Android,Mac和Windows平台,创建一个最简单的JNI动态链接库. 参考文章: Getting Started with JNI on Android, Windows and Mac And

VC++ 6.0如何创建与调用动态链接库

原文:http://blog.csdn.net/wanghaihao_1/article/details/51098451 1.静态链接库与动态链接库区别: 静态链接库:lib中的指令被直接包含在最终生成的EXE文件中. 动态链接库:dll不必被包含在最终的EXE中,EXE文件执行时可以动态地引用和卸载DLL文件. 同时,静态链接库中不能再包含其他的动态链接库或静态库,而动态链接库中可以包含其他的动态或静态库. 2.VC++支持的DLL: DLL的编制与具体的编程语言及编译器无关,动态链接库随处

LINUX系统中动态链接库的创建与使用{补充}

大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library).这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序间共享,节省了空间,提高了效率,具备很高的灵活性,得到越来越多程序员和用户的青睐.那么,在LINUX系统中有无这样的函数库呢? 答案是肯定的,LINUX的动态链接库不仅有,而且为数不少.在/lib目录下,就有许多以.so作后缀的文件,这