如何使用C ++中定义的函数 - 在Lazarus(freepascal)中生成.dll或.lib文件?

时间:2011-08-11 12:10:12

标签: c++ dll freepascal lazarus

我想在Lazarus代码中使用“ANN”库(近似最近邻)中的函数。此应用程序是用C ++编写的,并附带源代码。如何从Lazarus / FreePascal中访问这些功能?

编辑:Lazarus / FPC类似于Delphi。

2 个答案:

答案 0 :(得分:1)

如果要从dll导入函数,可以执行此操作

function ExportedFunctionName(parameters):ResultType;cdecl;external 'library.dll';

如果是c ++库,则使用cdecl,如果是windows库,则使用stdcall

这些代表参数传递约定

答案 1 :(得分:1)

这取决于图书馆。如果它是C ++的“C”子集,或者该接口是专门设计为可互操作的,请参阅opc0de的答案。这种情况的一个重要信号是“extern C {}”块。

如果库是 true C ++,则会出现问题。 C ++没有通用的导出机制,甚至两个不同的C ++编译器通常也不了解。

要使用它,您必须创建一个所谓的包装器。用/ same / C ++编译器编译的一段代码,它包装C ++特有的所有东西,只导出普通的C函数(extern C {})

作为一个例子,看一下所谓的QTPAS包装器,包装QT以便在Free Pascal / Delphi中使用。