我搜索了“已经在.obj中定义”的错误.obj,但是找不到与我所面临的具体问题相关的内容。希望有人能帮我这个忙..。
我有一个标题foo.h
// foo.h
#ifndef FOO_H
#define FOO_H
void foo() {
    print("foo\n");
}
#endif和主文件..。main.cpp
// main.cpp
#include <thread>
#include "foo.h"
int main() {
    std::thread t(foo);
    t.join();
    return 0;
}现在,它编译而没有任何错误,并给出给出输出到控制台.
foo但是如果我创建了另一个文件foo.cpp并且只包含了标题foo.h而没有做任何其他的事情..。
// foo.cpp
#include "foo.h"...I get链接器错误LNK2005 "void __cdecl foo(void)“(?foo@@YAXXZ)已在main.obj中定义
不知道这是怎么回事!
发布于 2016-05-02 11:04:28
您必须只将foo()函数的原型放在头文件中,并将实现放在.cpp中一次。
因此,foo.h必须包含:
#pragma once
void foo();和foo.cpp:
#include "foo.h"
void foo() {
    printf("Whatever");
}https://stackoverflow.com/questions/36980862
复制相似问题