我是 ffi 的新手。但我成功地将 dart-ffi 与函数调用一起使用。
现在,我想在 dart ffi 中使用 C++ 对象。我不知道这是否可能,但我试过这样。
构造函数调用的原型是:
function_dart = lib
.lookup<NativeFunction<function_native>>("constructor_function")
.asFunction();
但是我有:
Failed to lookup symbol <constructor_function>
,我尝试了构造函数:
constructor_function
class::constructor_function
class::constructor_function(args)
我做到了nm -gDC <lib>
,我可以看到构造函数。
帮助 !
编辑 1: @Botje,@Richard-Heap
我正在尝试使用 OpenCV 中的 VideoCapture 实例。
我已按照 Botje 的回答中的说明进行操作。
所以我创建了一个库,如下所示:
绑定.hpp:
#ifndef BIND_HPP
# define BIND_HPP
#include <opencv2/videoio.hpp>
extern "C" {
cv::VideoCapture *cvCreateVideoCapture(char *filename, int apiPreference);
}
#endif
绑定.cpp:
#include "bind.hpp"
cv::VideoCapture *createVideoCapture(char *filename, int apiPreference) {
return new cv::VideoCapture(filename, apiPreference);
}
我用来编译的命令:
g++ -c bind.cpp -lopencv -o bind.o
g++ bind.o -shared -o bind.so
我得到:dart: symbol lookup error: ./lib/src/bind.so: undefined symbol: _ZN2cv12VideoCaptureC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi
下一步,是使用 VideoCapture 实例的方法。
谢谢