4

これは私のMainWindowファイルの宣言で構成されていますが、簡潔にするためにライブラリのインクルージョンは含めていません。QObject.hを両方、および必要なすべてのライブラリに含めました。2番目の接続呼び出しが含まれる前は正常にコンパイルされていました。最初のCtrl-Cハンドラーは正常に機能します。

I took out my code, thought my employer wouldn't like it. See the appropriate response below!

QTCreatorを使用しています。私がこれらのエラーメッセージをググったとき、提供された解決策のほとんどは、makeコマンド/パスまたはVisualStudioでコンパイルされたときに発生するようなものを修正することを中心に展開しました。

繰り返しますが、これらのエラーは、グローバルGCameraとMainWindowの2番目の接続呼び出しを含めた後にのみ発生しました。この前にプログラムはコンパイルされ実行されていました。

よろしくお願いいたします。ご迷惑をおかけしましたことをお詫び申し上げます。

4

2 に答える 2

5

moc_tcamera.cppビルドディレクトリに欠落しているシンボルを実装するという名前のファイルが必要です。

存在しない場合は、プロジェクトを「実行」して「再構築」する必要があります(どちらのアクションもQt Creatorのビルドメニューにあります)。

エラーが発生した理由:

Q_OBJECTqmakeは、マクロを含むすべてのソースファイルのMakefileにmoc(Qtのメタオブジェクトコンパイラ)ステップを追加しますQ_GADGET。このようなファイルは「移動可​​能」と呼ばれます。ファイルがモーカブルまたは非モーカブルとして検出されると、qmakeが再実行されるまでそのステータスは変更されません。

QtCreatorは、.proファイルが変更された場合(たとえば、ファイルを追加または削除した場合)にのみqmakeを単独で実行します。

これはQ_OBJECT、ファイルtcamera.hにマクロを含めずにプロジェクトを1回コンパイルし、後でそのマクロを追加したことを意味します。また、への呼び出しを追加するまでメタオブジェクトは必要なかったためconnect、VC++は欠落しているシンボルを解決しようとしませんでした。

于 2012-05-10T02:09:44.127 に答える
1

たとえば、.proファイルにヘッダーを含めたが、ソースを含めなかった場合、リンカーエラーが発生する可能性があります。たとえば、.proファイルの場合:

HEADERS += t_camera.h foo.h
SOURCES += foo.cpp 

リンカエラー(通常はLNK2001およびLNK2019)が発生します。ただし、IIRCQtCreatorは.proファイルを管理しますよね?つまり、.proファイルが正しいことを確認してください。そうでない場合は驚きますが、.proファイルにエラーがあると、問題が発生する可能性があります。

于 2012-05-10T04:47:22.063 に答える