zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    100 道 Linux 常见面试题
    借助Redis锁,完美解决高并发秒杀问题
    'cnpm'安装install
    Git常用命令及方法大全
    idea controller service impl mapper xml切换跳转快捷键
    idea创建springboot项目用阿里云镜像
    mybatis.type-aliases-package的作用和用法
    MyBatis Generator
    https://antdv.com/components/layout-cn/
    https://mvnrepository.com/search?q=mysql-connector-java //maven
  • 原文地址:https://www.cnblogs.com/mattins/p/3443394.html
Copyright © 2011-2022 走看看