【问题标题】:Undefined reference to object. Possible wrong implementation对对象的未定义引用。可能的错误实施
【发布时间】:2012-03-05 12:33:30
【问题描述】:

我正在为一个课程编写一个程序,我必须在其中制作一个纸牌游戏,你必须匹配一对纸牌。它使用教授提供的用 Qt 编写的 GUI。我有一个头文件,其中包含一个名为 CardDeck 的类,它模拟一副纸牌。我已将此头文件包含在主 .cpp 文件中,但每当我尝试调用此类的任何成员函数时,编译器都会打印“未定义的对 `CardDeck::(member function)' 的引用”。我有一个名为 CardDeck.cpp 的 .cpp 文件,它定义了项目文件夹中的成员函数,但它可能无法正确编译。我相当缺乏经验,所以我不确定。任何帮助,将不胜感激。我正在使用带有 NetBeans IDE 的 MinGW 编译器。

main.cpp:

#include "CardDeck.h"

using namespace std;

// Declare any global variables (your deck object) here:

CardDeck gdeck(9, 14, 2);

void shuffleCards(){
    gdeck.ShuffleDeck();
}

CardDeck.h:

#ifndef CARDDECK_H
#define CARDDECK_H

#include "PlayingCard.h"
#include <vector>

class CardDeck {

public:    
    CardDeck();
    CardDeck(int, int, int);
    void ShuffleDeck();

    void DisplayXCards(int);
    void DisplayContents() const;

private:
    std::vector<PlayingCard> deck;
    int begin;
    int end;
    int number_each;

};

#endif  /* CARDDECK_H */

CardDeck.cpp:

#include <vector>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <functional>
#include "PlayingCard.h"
#include "CardDeck.h"


using namespace std;

CardDeck::CardDeck(){
    begin = 2;
    end = 14;    
}

CardDeck::CardDeck(int b, int e, int num_each){
    begin = b;
    end = e;
    number_each = num_each;
    char shapes[4] = {'H', 'S', 'C', 'D'};
    for(int k=0; k<number_each; k++){
        for(int j=0; j<4; j++){
            for(int i = begin; i<= end; i++){
                PlayingCard pc(i, shapes[j]);
                deck.push_back(pc);
            }       
        }
    }            
}

void CardDeck::DisplayContents() const{
    for(int k=0; k<deck.size(); k++){
        cout << deck[k].DisplayName() << endl;
    }
}

void CardDeck::ShuffleDeck(){
    random_shuffle(deck.begin(), deck.end());
}

void CardDeck::DisplayXCards(int n){
    for(int i=0; i<n; i++){
        cout << deck[i].DisplayName() << endl;
    }
}

生成文件:

#############################################################################
# Makefile for building: cs215pgm3
# Generated by qmake (2.01a) (Qt 4.8.0) on: Thu Mar 1 15:03:59 2012
# Project:  cs215pgm3.pro
# Template: app
# Command: c:/QtSDK/Desktop/Qt/4.8.0/mingw/bin/qmake.exe QMAKE_CC=C:/QtSDK/mingw/bin/gcc.exe QMAKE_CXX=C:/QtSDK/mingw/bin/g++.exe "QMAKE_CFLAGS=-g3 -gdwarf-2" "QMAKE_CXXFLAGS=-g3 -gdwarf-2" -o Makefile cs215pgm3.pro
#############################################################################

first: debug
install: debug-install
uninstall: debug-uninstall
MAKEFILE      = Makefile
QMAKE         = c:/QtSDK/Desktop/Qt/4.8.0/mingw/bin/qmake.exe
DEL_FILE      = rm
CHK_DIR_EXISTS= test -d
MKDIR         = mkdir -p
COPY          = cp
COPY_FILE     = $(COPY)
COPY_DIR      = cp -r
INSTALL_FILE  = $(COPY_FILE)
INSTALL_PROGRAM = $(COPY_FILE)
INSTALL_DIR   = $(COPY_DIR)
DEL_FILE      = rm
SYMLINK       = 
DEL_DIR       = rmdir
MOVE          = mv
CHK_DIR_EXISTS= test -d
MKDIR         = mkdir -p
SUBTARGETS    =  \
        debug \
        release

debug: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug
debug-make_default: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug 
debug-make_first: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug first
debug-all: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug all
debug-clean: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug clean
debug-distclean: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug distclean
debug-install: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug install
debug-uninstall: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug uninstall
release: $(MAKEFILE).Release FORCE
    $(MAKE) -f $(MAKEFILE).Release
release-make_default: $(MAKEFILE).Release FORCE
    $(MAKE) -f $(MAKEFILE).Release 
release-make_first: $(MAKEFILE).Release FORCE
    $(MAKE) -f $(MAKEFILE).Release first
release-all: $(MAKEFILE).Release FORCE
    $(MAKE) -f $(MAKEFILE).Release all
release-clean: $(MAKEFILE).Release FORCE
    $(MAKE) -f $(MAKEFILE).Release clean
release-distclean: $(MAKEFILE).Release FORCE
    $(MAKE) -f $(MAKEFILE).Release distclean
release-install: $(MAKEFILE).Release FORCE
    $(MAKE) -f $(MAKEFILE).Release install
release-uninstall: $(MAKEFILE).Release FORCE
    $(MAKE) -f $(MAKEFILE).Release uninstall

Makefile: cs215pgm3.pro  c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/default/qmake.conf c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/qconfig.pri \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/modules/qt_webkit_version.pri \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/qt_functions.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/qt_config.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/exclusive_builds.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/default_pre.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/default_pre.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/debug.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/debug_and_release.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/default_post.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/default_post.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/rtti.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/exceptions.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/stl.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/shared.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/warn_on.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/qt.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/thread.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/moc.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/windows.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/resources.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/uic.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/yacc.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/lex.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/include_source_dir.prf \
        c:/QtSDK/Desktop/Qt/4.8.0/mingw/lib/qtmaind.prl
    $(QMAKE) QMAKE_CC=C:/QtSDK/mingw/bin/gcc.exe QMAKE_CXX=C:/QtSDK/mingw/bin/g++.exe "QMAKE_CFLAGS=-g3 -gdwarf-2" "QMAKE_CXXFLAGS=-g3 -gdwarf-2" -o Makefile cs215pgm3.pro
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/qconfig.pri:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/modules/qt_webkit_version.pri:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/qt_functions.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/qt_config.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/exclusive_builds.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/default_pre.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/default_pre.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/debug.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/debug_and_release.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/default_post.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/default_post.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/rtti.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/exceptions.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/stl.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/shared.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/warn_on.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/qt.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/thread.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/moc.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/win32/windows.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/resources.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/uic.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/yacc.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/lex.prf:
c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/features/include_source_dir.prf:
c:\QtSDK\Desktop\Qt\4.8.0\mingw\lib\qtmaind.prl:
qmake: qmake_all FORCE
    @$(QMAKE) QMAKE_CC=C:/QtSDK/mingw/bin/gcc.exe QMAKE_CXX=C:/QtSDK/mingw/bin/g++.exe "QMAKE_CFLAGS=-g3 -gdwarf-2" "QMAKE_CXXFLAGS=-g3 -gdwarf-2" -o Makefile cs215pgm3.pro

qmake_all: FORCE

make_default: debug-make_default release-make_default FORCE
make_first: debug-make_first release-make_first FORCE
all: debug-all release-all FORCE
clean: debug-clean release-clean FORCE
distclean: debug-distclean release-distclean FORCE
    -$(DEL_FILE) Makefile

check: first

debug-mocclean: $(MAKEFILE).Debug
    $(MAKE) -f $(MAKEFILE).Debug mocclean
release-mocclean: $(MAKEFILE).Release
    $(MAKE) -f $(MAKEFILE).Release mocclean
mocclean: debug-mocclean release-mocclean

debug-mocables: $(MAKEFILE).Debug
    $(MAKE) -f $(MAKEFILE).Debug mocables
release-mocables: $(MAKEFILE).Release
    $(MAKE) -f $(MAKEFILE).Release mocables
mocables: debug-mocables release-mocables
FORCE:

$(MAKEFILE).Debug: Makefile
$(MAKEFILE).Release: Makefile

编译/错误信息:

/usr/bin/make -f Makefile.Debug
make[1]: Entering directory `/c/Users/Ben/Documents/CS 215/Programs/cs215Pgm3'
C:/QtSDK/mingw/bin/g++.exe -c -g3 -gdwarf-2 -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtCore' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtGui' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include' -I'.' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/ActiveQt' -I'debug' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/default' -o debug/cardwidget.o cardwidget.cpp
C:/QtSDK/mingw/bin/g++.exe -c -g3 -gdwarf-2 -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtCore' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtGui' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include' -I'.' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/ActiveQt' -I'debug' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/default' -o debug/cardwindow.o cardwindow.cpp
C:/QtSDK/mingw/bin/g++.exe -c -g3 -gdwarf-2 -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtCore' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtGui' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include' -I'.' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/ActiveQt' -I'debug' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/default' -o debug/main.o main.cpp
C:/QtSDK/Desktop/Qt/4.8.0/mingw/bin/moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtCore' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtGui' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include' -I'.' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/ActiveQt' -I'debug' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/default' -D__GNUC__ -DWIN32 cardwindow.h -o debug/moc_cardwindow.cpp
C:/QtSDK/mingw/bin/g++.exe -c -g3 -gdwarf-2 -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtCore' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtGui' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include' -I'.' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/ActiveQt' -I'debug' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/default' -o debug/moc_cardwindow.o debug/moc_cardwindow.cpp
C:/QtSDK/Desktop/Qt/4.8.0/mingw/bin/moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtCore' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtGui' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include' -I'.' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/ActiveQt' -I'debug' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/default' -D__GNUC__ -DWIN32 cardwidget.h -o debug/moc_cardwidget.cpp
C:/QtSDK/mingw/bin/g++.exe -c -g3 -gdwarf-2 -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtCore' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/QtGui' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include' -I'.' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/include/ActiveQt' -I'debug' -I'c:/QtSDK/Desktop/Qt/4.8.0/mingw/mkspecs/default' -o debug/moc_cardwidget.o debug/moc_cardwidget.cpp
g++ -mthreads -Wl,-subsystem,windows -o debug/cs215pgm3.exe debug/cardwidget.o debug/cardwindow.o debug/cs215pgm3.o debug/main.o debug/moc_cardwindow.o debug/moc_cardwidget.o debug/qrc_cards.o  -L'c:/QtSDK/Desktop/Qt/4.8.0/mingw/lib' -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4 
make[1]: Leaving directory `/c/Users/Ben/Documents/CS 215/Programs/cs215Pgm3'
debug/cs215pgm3.o: In function `Z12shuffleCardsv':
C:\Users\Ben\Documents\CS 215\Programs\cs215Pgm3/cs215pgm3.cpp:107: undefined reference to `CardDeck::ShuffleDeck()'
debug/cs215pgm3.o: In function `_static_initialization_and_destruction_0':
C:\Users\Ben\Documents\CS 215\Programs\cs215Pgm3/cs215pgm3.cpp:99: undefined reference to `CardDeck::CardDeck(int, int, int)'
collect2: ld returned 1 exit status
make[1]: *** [debug/cs215pgm3.exe] Error 1
make: *** [debug] Error 2


BUILD FAILED (exit value 2, total time: 9s)

【问题讨论】:

  • 您是如何构建、制作文件、托管构建或其他方法的?听起来链接器没有将您的 CardDeck.obj 文件包含在构建中。如果您仔细阅读编译器输出,您能判断它是编译器错误还是链接器错误?换句话说,你能看到 CardDeck 编译干净的输出吗?
  • 它应该是使用 makefile 构建的。编译器输出的主要错误消息是“构建失败:,所以我假设它编译不正确。
  • 你能给我们看看makefile吗?
  • 可能不是,“构建”通常是指整个编译/链接过程。 .h 文件只是对编译器的promise,即在该标头中定义的项目将在链接时可用。链接器会让你信守承诺。如果您的 make 文件不包含 CardDeck 的 .obj 文件,则链接将失败。我不知道您的经验水平,您是否在与 main() 方法分开的文件中使用 foo() 方法构建了一个简单的 C 程序?另请查看您的输出面板是否比错误/警告面板包含更多信息。
  • 更明确地说,您的 make 文件可能编译 main.它甚至没有编译 CardDeck。您说“它应该” 的事实让我认为您没有对其进行编辑以包含 CardDeck。一些 IDE 会自动为您执行此操作。通常,它们具有 project 的概念,当您向项目添加新的 C++ 单元时,它会更新 make 文件。 然而并不是所有的IDE都这样做,如果你根本不使用IDE,那么你肯定必须自己做。如果您告诉我们您使用的是什么工具链,它也可能对我们有所帮助。

标签: c++ object header


【解决方案1】:

查看您的编译器输出,前几行显示您正在编译 cardwidget.cpp、cardwindow.cpp 和 main.cpp。 CardDeck.cpp 没有对应的行。 (以及我假设的一些用于单元测试的模拟版本)。您发布的 make 文件没有显示对这些文件的引用。我不是 make 专家,但我怀疑您发布的 makefile 包含另一个您未包含的文件 (可能是 MAKEFILE=Makefile)。查看您的项目文件,看看您是否可以找到指定上述文件的文件,通常我记得 Makefiles 应该有类似

SOURCES =
or
SOURCES +=
and 
HEADERS=
or
HEADERS +=

无论如何,HAS 是对源文件和头文件的引用,因此如果您可以在文件内容中搜索,请找到具有 cardwidget.cpp 和可能有 cardwidget 的文件。 H。然后看看是否可以修改该文件以包含 CardDeck.cpp 和 CardDeck.h。

您发布的内容非常复杂,我怀疑某些文件自动构建工具正在为您创建它,您的开发环境可能有其他方式让您指定新的源文件和头文件,然后它会自动更新 make 文件。您需要阅读编译器/构建系统附带的任何文档。如果没有指定确切您正在使用的构建工具,也许有使用这些工具的经验的人可以提供帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2012-12-03
    • 2021-10-07
    • 2021-12-29
    • 1970-01-01
    • 2012-12-03
    • 2020-12-01
    相关资源
    最近更新 更多