[C/C++]_[初级]_[在Windows和macOS平台上导出动态库的一些思考]

场景

  1. 最近看了《COM本质论》里关于如何设计基于抽象基类作为二进制接口,把编译器和链接器的实现隐藏在这个二进制接口中,从而使用该DLL时不需要重新编译。在编译出C接口时,发现接口名直接是函数名,比如BindNativePort,怎么不是_BindNativePort?

说明

  1. VC++导出的函数默认是使用__cdcel约定。__cdeclCC++程序的默认调用约定。按照规范导出函数必须是_开头。

  2. 使用Dependencies开源工具看到以下导出函数,这个工具描述不够详细。

图1:
在这里插入图片描述

  1. 使用VC命令行自带的dumpbin工具来查看导出函数更详细。可以看到BindNativePort实际上会通过@ILT+2265(_BindNativePort)的方式查找。ILTINCREMENTAL LINK TABLE的缩写,这个@ILT其实就是一个静态函数跳转的表,它记录了一些函数的入口然后跳过去。
    一般VS的默认设置会

相关推荐

  1. windows 动态静态 介绍

    2024-06-07 22:28:02       55 阅读
  2. Node.js安装与配置Windowsmac

    2024-06-07 22:28:02       37 阅读
  3. LinuxWindows修改动态名字

    2024-06-07 22:28:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 22:28:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 22:28:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 22:28:02       82 阅读
  4. Python语言-面向对象

    2024-06-07 22:28:02       91 阅读

热门阅读

  1. .NET Core 应用程序发布指南

    2024-06-07 22:28:02       30 阅读
  2. Redis几种部署模式介绍

    2024-06-07 22:28:02       24 阅读
  3. TypeScript 在前端开发中的应用

    2024-06-07 22:28:02       28 阅读
  4. 几何(geometry)

    2024-06-07 22:28:02       26 阅读
  5. 分布式光伏发电的工作原理、特点及优势

    2024-06-07 22:28:02       33 阅读
  6. Flink Watermark详解

    2024-06-07 22:28:02       24 阅读
  7. 大数据与数据科学的学科边界

    2024-06-07 22:28:02       25 阅读
  8. 使用机器学习做医学图像分类的开源项目集锦

    2024-06-07 22:28:02       32 阅读
  9. postgressql——ReadBuffer_common函数(7)

    2024-06-07 22:28:02       28 阅读
  10. MySQL优化器的SQL重写规则

    2024-06-07 22:28:02       30 阅读