• Cpp 导出程序接口


    静态链接库:*.lib

    在程序编译时要使用的代码,会嵌入到最后生成的执行程序里。 

    动态链接库:*.dll

    在程序运行时要使用的代码。 可在运行时载入 或 在编译时链接 引入库(*.lib)文件 进行使用.

    动态链接库的类 方法 如果需要让外部使用 需要对类、方法进行标识:

    __declspec(dllexport)

    class __declspec(dllexport) TEST{
        public:
            void TT();
    };

    如果整个项目全没有标识__declspec(dllexport)过,是不会生成 引入库(*.lib)文件。

    使用:

    生成动态链接库后也有.lib文件,无论要用动态库,静态库,程序编译时要都要用.lib文件。


    VS自带工具:dumpbin的使用查看Lib,dll等

    https://blog.csdn.net/sinat_29890433/article/details/79556124

    可以查看DLL Lib内的函数

    利用Windows.h  的函数 动态调用DLL

    https://www.cnblogs.com/heben/p/5460202.html

    C++知识回顾之__stdcall、__cdcel和__fastcall三者的区别

    __cdecl:C/C++默认的函数调用协议。  :导出用

    https://www.cnblogs.com/yejianyong/p/7506465.html

    extern “C”: 
      作为C语言的扩展,C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的设计语言,为了支持函数的重载,C++对全局函数的处理方式有着明显的不同。 
      首先看一下C++对类似C的函数是怎样编译的: 
      作为面向对象的语言,C++为了支持函数重载,函数在被C++编译后在符号库中的名字与C语言的不同。假如某个函数的原型为void foo(int x, int y);该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生_foo_int_int之类的名字。_foo_int_int这样的名字是包含了函数名以及形参,C++就是靠这种机制来实现函数重载的。 
      被extern “C”修饰的函数或者变量是按照C语言方式编译和链接的,所以可以用一句话来概括extern “C”的真实目的:实现C++与C的混合编程。

    https://blog.csdn.net/qq_30891813/article/details/87631651

    By 2019/12

  • 相关阅读:
    DirectSound学习笔记(7):缓冲区操作
    Firebird MsSQL Data Types比较
    插座上的Linux充电器.不..Marvell Plug Computer
    ASP.NET / 学习asp.net比较完整的流程
    P2P穿透UDP/TCP原理
    在C#中利用ActiveX控件进行视频采集
    ffmpeg快速命令使用
    Win7上帝模式
    DirectSound学习笔记(3):协作级别
    自己写的一个asp.netcookies购物车类
  • 原文地址:https://www.cnblogs.com/mattins/p/3443394.html
Copyright © 2020-2023  润新知