【发布时间】:2014-06-02 12:52:57
【问题描述】:
在我的 main.c 中,我有:
int myvar[4] = {0,1,2,3};
int main(int argc, char *argv[])
{
...................
}
当我尝试在另一个文件中访问 myvar 时,如下所示:
extern int myvar[4];
if (myvar[0] == 1) do something;
当我构建它时(清理项目后),观察到错误“LNK2001:未解析的外部符号_myvar”和“致命错误 LNK1120:1 未解析的外部”。但是,如果我单独注释 'if' 语句,则解决方案构建良好,我可以在调试模式下的监视窗口中观察 myvar 的正确值。我对为什么会发生这种情况感到困惑。任何帮助将不胜感激!
【问题讨论】:
-
不同文件在同一个链接单元还是不同的链接单元(即两个不同的库)?
-
两个不同的库@eckes
-
我想知道你的“构建”是如何首先进入链接阶段的,因为(a)你不能在 C 中分配一个固定的数组,以及(b)@987654323 的声明@ 是非标准的(第二个参数是一个指向指针的数组
char??),(c)if {myvar[0] == 1}也不是合法的 C。检查拼写和声明,因为其中没有其他内容似乎是真正的代码,因此没有复制的机会。 -
那只是草率地引用了代码,混淆了 C 和 Matlab ! :)
标签: c visual-studio linker extern