1 つの画像表現 ( MyImage
)から に変換する関数QImage
があり、この方法でインターフェイスする関数専用の名前空間を作成する方が適切であると判断しました。以前は、この関数を main を表すクラスに直接持っていましたQMainWindow
。
そこで、MyFormatToQtInterfacing.h
次のようなファイルを作成しました。
#include <QtGui/QMainWindow>
#include <qlabel.h>
namespace MyFormatToQtInterfacing
{
// These functions below convert a cv::Mat to a QImage.
// Adapted from http://stackoverflow.com/questions/5026965/how-to-convert-an-opencv-cvmat-to-qimage
// The grayscale ones seem to be inverted. Look into this later.
QImage MyImage2QImage(const MyImage &src) { //snip };
};
次に、予想どおり、この新しい名前空間から関数を呼び出すと、次のリンカー エラーが発生します。
1>main.obj : エラー LNK2005: "class QImage _ cdecl MyFormatToQtInterfacing::Mat2QImage(class MyImage2QImage const &)" (?MyImage2QImage@MyFormatToQtInterfacing@@YA?AVQImage@@ABV?$Mat @V?$Vec@E$02@ cv@@@cv@@@Z) moc_Tracker.obj で定義済み
1>Tracker.obj: エラー LNK2005: "class QImage _ cdecl MyFormatToQtInterfacing::MyImage2QImage(class MyImage2QImage const &)" (?MyImage2QImage@MyFormatToQtInterfacing@@YA?AVQImage@@ABV?$Mat @V?$Vec@E$02@ cv@@@cv@@@Z) moc_Tracker.obj で定義済み
1>C:\Projects\Tracker\Tracker.exe: 致命的なエラー LNK1169: 1 つ以上の複数定義されたシンボルが見つかりました
また、OpenCV マトリックスを使用して MyImage をサブし、同じ問題を抱えています。なぜこれが起こっているのですか、どうすれば解決できますか?