首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用fpc导出重载函数

用fpc导出重载函数
EN

Stack Overflow用户
提问于 2014-02-27 12:33:44
回答 2查看 543关注 0票数 1

我需要在fpc (delphi-模式)中创建一个dll。它工作得很好,但出于某些原因,我想(在一个单元中)做一些事情,比如

代码语言:javascript
复制
function doSomeThing(a:type1):type2;stdcall;
function doSomeThing(a:type3):type4;stdcall;

在库中(用于使用上面的单元构建dll )

代码语言:javascript
复制
exports
    doSomeThing(a:type1) name 'doSomeThingTYPE1',
    doSomeThing(a:type3) name 'doSomeThingTYPE3';

语法是不言自明的,并在How to export Overload functions from DLL?中被告知。但它似乎无法在fpc中使用(x86_64版本2.6.0-9 2013/04/14 )。是否有机会这样做-或者我必须重命名我的源代码内的函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-27 22:37:48

David在另一个线程中咨询了我,我设计了一些编译的东西,但是不知道它是否有效。

它基于使用定义的链接器级别标识符导出函数,然后声明一个外部函数,使用不同的Pascal名称重新使用它。请注意,bla和bla2甚至不一定与剂量变化在同一个单元中。

代码语言:javascript
复制
library testdll; 

{$mode delphi}
type 
   type1=integer;
   type3=char;
   type2=smallint;
   type4=widechar;

function doSomeThing(a:type1):type2;stdcall; overload; [public, alias:'bla'];
begin
  result:=a+1;
end;

function doSomeThing(a:type3):type4;stdcall; overload; [public, alias:'bla2'];
begin
  result:=widechar(ord(a)+1000);
end;

procedure bla; external name 'bla';
procedure bla2; external name 'bla2';
exports
    bla name 'doSomeThingTYPE1',
    bla2 name 'doSomeThingTYPE3';

end.
票数 1
EN

Stack Overflow用户

发布于 2014-02-27 13:15:12

链接到的问题讨论Delphi。Delphi支持的语法允许您导出重载函数,FPC不支持这种语法。

据我所知,过载的函数是不可导出的。不过,我很容易就错了。也许有一种办法,正如马可在他的回答中所建议的那样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22068653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档