C程序链接错误?

时间:2011-07-22 04:57:20

标签: c visual-c++ linker linker-errors

我有一个情况。我在头文件中有一些用extern关键字声明的函数。我在C文件中有他们的定义。这两个文件位于同一目录中。我制作了一个visual studio项目并包含头文件。当我使用头文件中声明的函数时。该程序给我链接错误(LNK2019)。我插入包含标题和C文件的目录的路径包含其他目录。但问题仍然存在。我该如何解决这个问题?

由于

5 个答案:

答案 0 :(得分:0)

不需要使用extern关键字声明函数。这是多余的。

您的错误消息告诉您,您定义的函数之一(不仅仅是声明)引用了一个extern变量,但是声明该变量的源文件(即,在没有extern关键字的情况下声明它的地方)不是被联系起来。

答案 1 :(得分:0)

您是否在Visual Studio项目文件中包含了包含函数定义的C源文件?我相信链接器抱怨它无法找到函数定义

答案 2 :(得分:0)

重要的是将.c文件添加到项目/解决方案中。这就是项目的目的:引用所有必要的实现文件(即.c文件)。显然,你没有这样做。因此错误。

您无需将标头文件(即.h文件)添加到项目/解决方案中。头文件通常会添加到项目中以方便使用,因此您可以在一个位置看到它们。否则,完全没必要。

答案 3 :(得分:0)

假设xx.hprog.c中包含{}} xx.c C:\dev\c\libx cl /I C:\dev\c\libx prog.c C:\dev\c\libx\xx.c cl /I C:\dev\c\libx prog.c /link /LIBPATH:C:\dev\c\libx xx.obj 中的LIB

OBJ

如果您有{{1}}而不是{{1}},则相同。

在Visual Studio中,正如其他人所说,只需将源文件添加到项目中即可。右键单击项目资源管理器中的项目,“添加...”,“现有元素...”(或类似的英文),然后浏览到该文件。

答案 4 :(得分:0)

感谢大家。我发现了问题,但上面的答案也非常有帮助。问题是我正在调用那些定义在.c文件中的函数。但我在我的.cpp文件中调用它。这就是造成这个错误的原因。我将.cpp文件的扩展名更改为.c文件,现在它正常工作。 Thnaks