我想在我的拉撒路代码中使用'ANN‘库(近似最近邻)中的函数。这个应用程序是用C++编写的,并附带源代码。如何从Lazarus/FreePascal中访问函数?
编辑: Lazarus/FPC类似于Delphi。
发布于 2011-08-15 03:28:35
这取决于库。如果它是C++的"C“子集,或者如果该接口是专门为互操作而设计的,请参阅Opc0de的答案。这种情况的一个重要信号是"extern C {}“块。
如果库是真正的C++,那么就有问题了。C++没有通用的导出机制,即使是两个不同的C++编译器通常也不能相互理解。
要使用它,您必须创建一个所谓的包装器。使用/ C++ / C++编译器编译的一段代码,它封装了特定于C++的所有内容,并且只导出纯C函数(extern C{})
作为一个例子,看看所谓的QTPAS包装器,它包装了QT以便在Free Pascal/Delphi中使用。
发布于 2011-08-12 00:54:28
如果要从dll导入函数,可以执行以下操作
function ExportedFunctionName(parameters):ResultType;cdecl;external 'library.dll';如果是c++库使用cdecl如果是windows库使用stdcall
它们表示参数传递约定
https://stackoverflow.com/questions/7025593
复制相似问题