dll中的导出是否敏感?

时间:2013-11-26 01:11:49

标签: windows delphi dll case-sensitive

我正在研究win7和delphi 2010.这是我的代码。

library CFGFunc;

uses
sysUtils
Un_ExFuncDll in "base\Un_ExFuncDll.pas"
...

exports
LoadExFuncsInDLL,
...

和Un_ExFuncDll.pas在这里

unit Un_ExFuncDll;
interface    
uses
  Classes;
  procedure LoadexfuncsIndll(); stdcall;
  ...

编译后,dll不起作用。但是我用LoadexfuncsIndll()替换了 LoadExFuncsInDLL()Un_ExFuncDll.pas(完全匹配导出中的内容)。然后它工作了。

Delphi 不区分大小写。但似乎dll中的导出区分大小写。 那么,与他们的交易是什么?

1 个答案:

答案 0 :(得分:11)

导入/导出DLL函数 IS 区分大小写,并且一直都是。该行为与操作系统DLL加载程序绑定,后者区分大小写。这是Delphi语言中区分大小写的唯一区域之一。这是记录在案的行为,至少部分是:

Writing Dynamically Loaded Libraries

  

名称说明符由指令名称后跟字符串常量组成。如果条目没有名称说明符,则例程将以其原始声明的名称以相同的拼写和大小写导出。如果要以其他名称导出例程,请使用名称子句。

Procedures and Functions (Delphi)

  

在导入声明中,请确保与例程的确切拼写和大小写相匹配。稍后,当您调用导入的例程时,该名称不区分大小写。