gpt4 book ai didi

c++ - 无法公开功能。获取 : "LNK2005" error. 如何调试链接器错误

转载 作者:行者123 更新时间:2023-12-01 14:52:11 25 4
gpt4 key购买 nike

MyFourierClass::forward_fft 在我的项目中只有一个定义。当我将 MyFourierClass::forward_fft 声明为 public 时,我收到此错误,否则没有错误。
错误信息:

1>my_fourier.obj : error LNK2005: "public: void __cdecl MyFourierClass::forward_fft(int)" (?forward_fft@MyFourierClass@@QEAAXH@Z) already defined in main.obj
1>CGPProject\x64\Debug\CGPProject.exe : fatal error LNK1169: one or more multiply defined symbols found
my_fourier.cpp:
#ifndef MY_FOURIER
#define MY_FOURIER

class MyFourierClass {
double** dataset = 0;
//public: // <-- un-commenting this line causes the linker error.
void forward_fft(int);
};
void MyFourierClass::forward_fft(int bins) {
bins = bins + 1;

};
#endif
主要的:
#ifndef MY_MAIN
#define MY_MAIN
#include "my_fourier.cpp"
int main() {
int i = 0;

}
#endif
是否有调试链接器错误的标准方法?我认为另一个文件中可能有定义,所以我删除了项目中的所有其他文件。现在只有 main.cpp 和 my_fourier.cpp。我正在使用 Visual Studio 2019。
提前致谢。

最佳答案

当您使用 include 指令将模块 my_fourier.cpp 包含在带有 main 的模块中时

#include "my_fourier.cpp"
那么这个函数
void MyFourierClass::forward_fft(int bins) {
bins = bins + 1;

};
至少定义了两次。
您应该将类​​定义放在标题中,并且此标题包含在模块中
my_fourier.cpp,其中定义了成员函数,并且在模块中主要从最后一个模块中删除了指令
#include "my_fourier.cpp"

关于c++ - 无法公开功能。获取 : "LNK2005" error. 如何调试链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62562702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com