0

何らかの理由で、サンプル コードを使用しようとすると、コンパイラが協力を拒否します。

私が使用しているサンプル コードは、http: //qt-project.org/doc/qt-4.8/multimedia-videowidget.htmlからのものです。現在、VideoWidgetSurface クラスのみを使用しています。

私が知る限り、私のコードはサンプルのコードと 100% 同一であり、コーディング ミスはありません。

ただし、コンパイルすると次のようになります。

1>moc_VideoWidgetSurface.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)       
public: virtual void * __thiscall QAbstractVideoSurface::qt_metacast(char const *)" (__imp_?
qt_metacast@QAbstractVideoSurface@@UAEPAXPBD@Z) referenced in function "public: virtual void * 
__thiscall VideoWidgetSurface::qt_metacast(char const *)" (?
qt_metacast@VideoWidgetSurface@@UAEPAXPBD@Z)
1>moc_VideoWidgetSurface.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)  
public: virtual int __thiscall QAbstractVideoSurface::qt_metacall(enum QMetaObject::Call,int,void * 
*)" (__imp_?qt_metacall@QAbstractVideoSurface@@UAEHW4Call@QMetaObject@@HPAPAX@Z) referenced in 
function "public: virtual int __thiscall VideoWidgetSurface::qt_metacall(enum 
QMetaObject::Call,int,void * *)"(?qt_metacall@VideoWidgetSurface@@UAEHW4Call@QMetaObject@@HPAPAX@Z)

. . . .

1>VideoWidgetSurface.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: 
class QSize __thiscall QVideoSurfaceFormat::frameSize(void)const " (__imp_?
frameSize@QVideoSurfaceFormat@@QBE?AVQSize@@XZ) referenced in function "public: bool __thiscall 
VideoWidgetSurface::isFormatSupported(class QVideoSurfaceFormat const &,class QVideoSurfaceFormat 
*)const " (?isFormatSupported@VideoWidgetSurface@@QBE_NABVQVideoSurfaceFormat@@PAV2@@Z)
1>VideoWidgetSurface.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: 
static enum QImage::Format __cdecl QVideoFrame::imageFormatFromPixelFormat(enum 
QVideoFrame::PixelFormat)" (__imp_?imageFormatFromPixelFormat@QVideoFrame@@SA?
AW4Format@QImage@@W4PixelFormat@1@@Z) referenced in function "public: bool __thiscall 
VideoWidgetSurface::isFormatSupported(class QVideoSurfaceFormat const &,class QVideoSurfaceFormat 
*)const " (?isFormatSupported@VideoWidgetSurface@@QBE_NABVQVideoSurfaceFormat@@PAV2@@Z)

. . . .

1>C:\Users\Owner\documents\visual studio 2010\Projects\ParticleTracker\Debug\ParticleTracker.exe : fatal error LNK1120: 30 unresolved externals

【誤字が多いので削除】

========== ビルド: 0 成功、1 失敗、0 最新、0 スキップ ==========

このエラーが発生する理由が完全にはわかりません。これまで、Qt で発生した問題は最小限であり、プログラムを正常に実行できました (qmake を使用せずに Visual Studio '10 で)。

「追加の依存関係」セクションにあるすべての .lib ファイルにリンクしていることを再確認しましたが、欠落しているものはありません。

このエラーはマルチメディア モジュールにのみ存在するようです。既存のマルチメディア .lib を検索しましたが、何も見つかりませんでした。

次のcmdコマンドを試しました:

moc -I"%QTDIR%\include" -I"%QTDIR%\include\QtCore" -I"%QTDIR%\include\QtGui" -I"%QTDIR%\include\QtMultimedia" -omoc_VideoWidgetSurface.cpp VideoWidgetSurface.h

しかし、うまくいかず、まだエラーが発生します。

どんな助けでも大歓迎です。私のコードやリンク/インクルードをもっと見たい場合は、それらも共有します。ありがとうございました!

4

1 に答える 1

0

マルチメディア モジュールとリンクする必要があります。qtgui4.dll、qtcore4.lib などとリンクするのと同じように、qtmultimedia4.lib とリンクする必要があります。それで全部です。

于 2012-06-26T23:23:25.387 に答える