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's answer の指示に従いました。
だから私はこのようにlibを作成しました:
bind.hpp :
#ifndef BIND_HPP
# define BIND_HPP
#include <opencv2/videoio.hpp>
extern "C" {
cv::VideoCapture *cvCreateVideoCapture(char *filename, int apiPreference);
}
#endif
bind.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 インスタンスのメソッドを使用することです。
ありがとうございました