我试图在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
那么如何修复错误呢?
答案 0 :(得分:0)
如果您在头文件(Header.h)中声明并实现了一个函数,如果该文件被包含两次,那么您很可能会在某个时候出现function already defined
错误。
这可以通过以下方式解决:
将函数实现移动到源(cpp)文件,并且只在头文件(h)中保留它的声明
使函数inline
(如果可以接受),将删除错误