无法使函数公开。获取:"LNK2005"错误。如何调试链接器错误
Cannot make function public. Getting: "LNK2005" error. How to debug linker errors
在我的项目中,MyFourierClass::forward_fft只有一个定义。当我将 MyFourierClass::forward_fft 声明为公共时,我收到此错误,否则没有错误。
错误信息:
1>my_fourier.obj : error LNK2005: "public: void __cdecl MyFourierClass::forward_fft(int)" (?forward_fft@MyFourierClass@@QEAAXH@Z) already defined in main.obj
1>CGPProjectx64DebugCGPProject.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
是否有调试链接器错误的标准方法?我认为另一个文件中可能有定义,所以我删除了项目中的所有其他文件。现在只有主.cpp和my_fourier.cpp。我正在使用Visual Studio 2019。
提前谢谢。
当您使用 include 指令将模块my_fourier.cpp包含在模块中时
#include "my_fourier.cpp"
那么这个函数
void MyFourierClass::forward_fft(int bins) {
bins = bins + 1;
};
至少定义两次。
您应该将类定义放在标头中,并且此标头包含在模块中 my_fourier.cpp定义成员函数的位置,并在模块中,主模块从最后一个模块中删除指令
#include "my_fourier.cpp"
相关文章:
- 无法使函数公开。获取:"LNK2005"错误。如何调试链接器错误
- C++为什么我的编译器成功了,但我的计算机给出了调试错误?
- 如何在 Python C++ 混合库中调试非确定性分段错误?
- 分段错误 .AnsiStringToUnicodeString 作为第一个调试错误行.杜比奥斯类等级制度
- _mm256_load_ps调试模式下导致谷歌/基准测试的分段错误
- 构建 Tensorflow 调试时出现错误LNK2019
- 如何使用realsense摄像头调试ROS错误消息
- 调试模板时出现问题.专门针对 Linux GCC 7、GCC 6、GCC 5、GCC 4.9 错误构建失败:模板参数 1
- 当 lib 已添加到其他依赖项时,如何在 VS 中调试未解析的外部符号错误
- 当 2 个线程共享同一物理内核时,具有错误共享的易失性增量在发布中的运行速度比在调试中慢
- 在 Windows 10 下使用 GTest 的 CMake - 致命错误 LNK1104:无法打开文件"gtest.lib",但存在调试"gtestd.lib"
- 程序在 CLion 中调试时收到分段错误
- C++ 无法从错误进行调试,但代码中没有错误
- 未知错误,调试器只给我一个内存地址
- 错误 C1001:调试模式下的编译器中发生内部错误
- C++程序退出没有错误.如何调试
- 如何处理由于项目中涉及的库的不同构建标志而出现的当前堆错误(在调试模式下)
- 启动时的c++运行库错误-任何调试技巧
- 使用 gdb 在问号中显示段错误进行调试 函数"?? ()"
- 如何捕捉错误和调试在Visual Studio 2010中使用c++创建的Excel DLL插件