0

私はこれが何千回も尋ねられたことを知っていますが、私は困惑しています. 過去3日間、結果なしでずっと探していました。このエラーが発生し続けますが、その理由がわかりません。入力した/重要なコードのみを追加しました。コードをコメントアウトすると、プログラムは問題なくコンパイルされます。私は何を間違っていますか???

CMakeFiles/brewtarget.dir/MainWindow.cpp.o: 関数内 MainWindow::MainWindow(QWidget*)': MainWindow.cpp:(.text+0xb145): 未定義の酵母酵母セル カウンターへの参照::酵母細胞カウンター ()'

CODE

メインウィンドウ.cpp

#include "yeastcellcounter.h"

// a whole lot of stuff between these...

yeastCountDialog = new yeastCellCounter();

メインウィンドウ.h

class yeastCellCounter;

// A whole log of stuff between these...

yeastCellCounter *yeastCountDialog;

yeascellcounter.cpp

#include "yeastcellcounter.h"

yeastCellCounter::yeastCellCounter(){}

酵母細胞カウンター.h

#ifndef YEASTCELLCOUNTER_H
#define YEASTCELLCOUNTER_H

class yeastCellCounter
{
public:
    yeastCellCounter();
};

#endif // YEASTCELLCOUNTER_H

これは、cmakelist.txt の INCLUDE_DIRECTORIES ディレクティブです。

SET(ROOTDIR "${CMAKE_CURRENT_SOURCE_DIR}")
SET(SRCDIR "${ROOTDIR}/src")
SET(UIDIR "${ROOTDIR}/ui")
SET(DATADIR "${ROOTDIR}/data")
SET(TRANSLATIONSDIR "${ROOTDIR}/translations")
SET(WINDIR "${ROOTDIR}/win")

INCLUDE_DIRECTORIES(${SRCDIR})
INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/src") # In case of out-of-source build.
INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/QtDesignerPlugins")
4

2 に答える 2

2

タイプのエラーが表示される場合は常にundefined reference to ...、リンカー エラーです。これは、コンパイラが作業を完了し、すべてのオブジェクト ファイルがエラーなしでコンパイルされたことを意味します。ここで、リンカがすべてのピースを 1 つのファイルにまとめます。

あなたの特定の例では、 function の定義が見つからないと言っていますyeastCellCounter::yeastCellCounter()。貼り付けたコードから、この関数は空ですが、ファイルで明確に定義されていますyeascellcounter.cpp

cmakelists.txt ファイルが不完全なようです。最終的な実行可能ファイルを作成するためにリンクする必要があるソース ファイルを指定していません。add_executableこれにはステートメントを使用する必要があります。

ここに簡単な例があります

于 2013-08-30T08:50:33.293 に答える
1

問題は:

yeastCountDialog = new yeastCellCounter();

そのはず:

yeastCountDialog = new yeastCellCounter;

(括弧がないことに注意してください)。デフォルトのコンストラクターは、常に括弧なしで呼び出されます。また、「yeastcellcounter.cpp」を cmake ソースのリストに追加する必要があります。

于 2013-09-01T19:37:49.550 に答える