【发布时间】:2011-09-21 15:48:22
【问题描述】:
我有一个可以在 Linux 中使用 gcc 编译的 c 代码。但是当我尝试使用microsoft visual studio c++ 2008 express edition编译它时,使用ide,它显示错误
vec.obj : error LNK2005: _INIT_SETA already defined in a.obj
fatal error LNK1169: one or more multiply defined symbols found
我检查了头文件,它们都有预处理器保护,以防止头被多次包含,例如
#ifndef _vec_h_
#define _vec_h_
然后我尝试在visual studio命令提示符下编译它,
cl main.c
可以编译。问题是什么?
【问题讨论】:
-
您是否尝试过清理解决方案/项目并重建它? Visual Studio 可能每次都以不同的顺序编译文件(或者您只更改一个需要重新编译的文件),所以您可能有旧的 obj 文件,其中定义已经存在?
-
谢谢尼克!这真的很有帮助!我排除了所有文件,项目中只有main.c,现在可以编译了。谢谢Pratorian和Daniel,我想这确实是链接问题,但不知何故只有main.c就可以解决问题
标签: c++ c visual-studio-2008 compiler-errors