在c++中使用#include访问在其他文件中声明的函数

accessing functions declared in some other file using #include in c++

本文关键字:文件 声明 函数 其他 #include c++ 访问      更新时间:2023-10-16

我有一个文件EnabledSets.cpp,其中我以以下形式调用函数

   ChessImpl::SetEventAttribute(ec.getEventId(sid-1), DISABLE, transition.tid);

我在名为enabledSet.cpp的文件中这样做,其中包括chessimple .h

我包含了Chess.h,它在Chess.cpp 中定义了函数

但是当我运行我的代码时,我得到这个错误

  EnabledSets.cpp $(.text+0xa0f): undefined reference to `ChessImpl::SetEventAttribute(EventId, unsigned int, unsigned int)' 

Thanks in advance

这不是java,您需要立即将。cpp文件传递给gcc ALL,或者分别编译和链接。

当您编写像g++ file_name.cpp这样的命令时,您告诉GCC编译并将文件链接到一个完整的程序中。它失败是因为单个文件不是一个完整的程序;部分程序在其他源文件中。

你可以使用:

一次编译所有内容
g++ file1.cpp file2.cpp -o myprog

或者您可以单独编译每个文件(到一个.o文件),然后将它们作为单独的步骤链接:

g++ -c file1.cpp
g++ -c file2.cpp
g++ file1.o file2.o -o myprog

如果您只是在提示符下输入命令,那么第一种方法更简单,但是在处理大型程序时效率非常低,因为它会重新编译所有内容,即使只有很少的更改。大型应用程序通常具有单独编译源文件的构建系统,并且只重新编译已更改的源文件。