C++ 包含由me-C+创建的相同头文件时发生链接错误+;

C++ 包含由me-C+创建的相同头文件时发生链接错误+;,c++,C++,我在一个MFC项目中工作,我的库有一个头文件和cpp文件,我在不同的文件中包含头文件,但只在“主”文件中包含cpp。我在头文件中有一个字符数组的全局初始化,因为所有文件都需要它。但是当我编译它时,可以理解,它告诉我我已经初始化了char数组两次 我曾经尝试过使用pragma和头文件中使用的定义技巧 #ifndef MY_HEADER_FILE #define MY_HEADER_FILE //Initialization here #endif 但是链接器仍然给出错误,我们如何解决这个问题

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

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

#ifndef MY_HEADER_FILE
#define MY_HEADER_FILE

//Initialization here

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

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

如果这意味着你有

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

int main() { ... }

#include“MyFile.cpp”//存在多个链接错误,请告诉我们您得到了哪一个链接错误,并请注意您发布的内容足以重现问题()您是否在其他来源中包含cpp?不要这样做你可以通过访问stackoverflow.com,阅读,学习这里的问题,然后问一个包含答案的问题来解决问题。这将使您的问题有足够的信息供其他人帮助您。你的问题不是,在这里,你最希望的是猜测你的问题可能是什么。我很确定在标题中创建全局对象有一个规范副本,但我找不到它。这个可能没问题:无论如何,你不应该在头文件中定义全局对象,这迟早会崩溃的。您应该只在头文件(
extern int myGlobalVar;
)中声明带有外部链接的变量,并在一个.cpp(
int myGlobalVar;
)中定义它。永远不要
包含
cpp文件,它们不是用来这样使用的。谢谢你的回答,但我删除了cpp文件,但这不是问题所在,问题是链接时出现重新定义错误,即使在使用pragma onceen时也会出现此错误。请创建并添加有关这些错误的详细信息。问题是链接时出现重新定义错误,即使在使用pragma onceen时也会出现此错误,这在包含
.cpp
文件时是一个预期问题。但是,获取此类错误的第二种方法是在多个cpp文件中使用的头中定义变量和函数#pragma一次或包括警卫都没用。