我想在Lazarus代码中使用“ANN”库(近似最近邻)中的函数。此应用程序是用C ++编写的,并附带源代码。如何从Lazarus / FreePascal中访问这些功能?
编辑:Lazarus / FPC类似于Delphi。
答案 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中使用。