加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi链接器和C链接器之间的区别

发布时间:2020-12-15 09:08:48 所属栏目:大数据 来源:网络整理
导读:我来自Delphi世界,静态导入DLL函数非常简单.您需要做的就是指定函数名称和模块,如下所示: function GetTickCount : DWORD; stdcall; external 'Kernel32.dll'; 为什么在C中必须使用kernel32.lib才能导入函数?为什么我不能简单地告诉链接器像Delphi一样导入
我来自Delphi世界,静态导入DLL函数非常简单.您需要做的就是指定函数名称和模块,如下所示:

function GetTickCount : DWORD; stdcall; external 'Kernel32.dll';

为什么在C中必须使用kernel32.lib才能导入函数?为什么我不能简单地告诉链接器像Delphi一样导入该函数?

我知道这对你们的老兄来说听起来很无聊,但是从Delphi进入C世界真的会让人感到困惑.

解决方法

C工具链需要几个步骤来完成Delphi可以一步完成的工作.在C语句中声明外部DLL函数时,没有(标准)方法来指示实际可以找到该函数的命名DLL.就编译器而言,声明的函数只是extern并且必须有一个定义可以在链接器的某处找到.

要将命名函数连接到可以找到它的DLL,C工具链需要一个“导入库”,其中包含链接器知道如何处理的导入存根.当查找由导入存根定义的函数时,链接器会为相应DLL中的特定函数名创建DLL函数引用(如导入存根所示).

在Delphi中,语言设计者允许程序员直接在源代码中指定相关的DLL.然后,Delphi编译器可以直接生成对外部DLL的引用,而无需使用导入存根步骤.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读