错误LNK2005:已在MyForm.obj中定义的函数

时间:2017-01-02 20:35:40

标签: c++ visual-studio visual-c++

我试图在Visual Studio C ++中创建一个Windows窗体应用程序,但是在编译之后,我为每个函数得到了这个错误:

  

错误LNK2005:已在MyForm.obj中定义的函数

这些是我的文件:

Source.cpp

#pragma once
#include "MyForm.h"
using namespace System;
using namespace System::Windows::Forms;

[STAThread]//leave this as is
void main() {
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
    Application::Run(gcnew Project1::MyForm);
}

MyForm.h

#pragma once
#include <iostream>
#include <string>
#include "Header.h"

namespace Project1 {
    //codes of te form
}

Header.h

#pragma once
#include <iostream>
#include <string>
#include <cmath>
#include <set>
#include <algorithm>
using namespace std;
int n, m;
int size1, size2;
//My functions here

那么如何修复错误呢?

1 个答案:

答案 0 :(得分:0)

如果您在头文件(Header.h)中声明并实现了一个函数,如果该文件被包含两次,那么您很可能会在某个时候出现function already defined错误。

这可以通过以下方式解决:

  • 将函数实现移动到源(cpp)文件,并且只在头文件(h)中保留它的声明

  • 使函数inline(如果可以接受),将删除错误