1

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 インスタンスのメソッドを使用することです。

ありがとうございました

4

2 に答える 2