在c++中使用#include访问在其他文件中声明的函数
accessing functions declared in some other file using #include in c++
我有一个文件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
如果您只是在提示符下输入命令,那么第一种方法更简单,但是在处理大型程序时效率非常低,因为它会重新编译所有内容,即使只有很少的更改。大型应用程序通常具有单独编译源文件的构建系统,并且只重新编译已更改的源文件。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 用"=default"声明的函数应该只在头文件中执行
- 调用在 HXX 文件中声明的静态数据成员
- 如何在 c++ 的不同文件中声明类?
- 如何在头文件中声明类模板(由于循环依赖关系)
- 声明要在 qml 和 cpp 文件中使用的全局字符串
- 在.cpp文件之间传递结构声明,而不使用全局头文件
- 为什么要将函数声明和定义放在单独的文件中
- 枚举前向声明与头文件
- 在命名空间中声明变量,在 main 中定义它,使其对所有其他文件可见
- 在带有类型保护的模板文件中使用前向声明
- 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- 在多个头文件中从接口声明被覆盖的函数时,如何避免重复代码?
- 应该在类中的文件声明为静态
- 是否应从头文件声明中排除辅助函数?(C++)
- 哪个C++头文件声明 strlen
- 如何为头文件声明“#include”以避免“error lnk2005”
- 打开文件和关闭文件声明定位:最佳做法,优点,缺点
- 说双向文件声明不隐式设置标志是否正确