函数已经在.obj中定义了
问题描述:
据我所知,当你有多个文件包括同一个文件时,这个错误是由于没有正确地使用头文件引起的。在我而言,这是包括树是造成错误:函数已经在.obj中定义了
File A includes Z, which contains the functions I need. File B includes A, and file C includes A.
没有任何#pragma once
的,程序给出了一堆同样的错误的变化:
blahblah.obj: error LNK2005: class some::namespace::ObjectType Object already
defined in dialogDlg.obj
我只是想知道,鉴于我描述的包含树,有什么正确的方法来正确编译?
我尝试在文件Z上使用#pragma once
,但那不起作用。我也在文件A上尝试过#pragma一次,这也没有奏效。最后我在A和Z上都试过了,也没有奏效。
答
看来你试图定义一个头文件中的变量。如果该头文件包含在多个源文件中,它将在每个源文件中定义,从而给你错误。
而是声明它作为extern
然后在其中一个源文件中定义。
所以在头文件:
extern ObjectType Object;
而且在源文件:
ObjectType Object;
东西给我你不使用单独的头文件的想法? – 2013-03-04 14:40:35