提问者:小点点

包含由ME-C++创建的相同头文件时出现链接错误[已关闭]


我在一个MFC项目中工作,我有一个我的库的头文件和cpp文件,我在不同的文件中包括头文件,但只在“主”文件中包括cpp。 我在头文件中有一个char数组的全局初始化,因为所有文件都需要它。 但是当我编译它时,可以理解的是,它告诉我,我已经初始化了char数组两次。

我曾经尝试使用pragma和头文件中使用的定义技巧

#ifndef MY_HEADER_FILE
#define MY_HEADER_FILE

//Initialization here

#endif

但是链接器仍然给出错误,我们如何解决这个问题?


共1个答案

匿名用户

我在不同的文件中包括头文件,但只在“主”文件中包括cpp

如果这意味着你有

#include "MyFile.cpp" // <- Remove this

int main() { ... }

那么这个文件将包含“myfile.cpp”的所有定义,因此两个编译单元包含相同的定义。

您不应#include任何。cpp文件。 在头文件中使用include卫士是行不通的,因为两个编译单元都是彼此分离的。 您不能使用宏来控制在另一个编译单元中发生的事情。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(包含|me-c++|创建|头文件|链接|关闭)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?