我有一个情况。我在头文件中有一些用extern关键字声明的函数。我在C文件中有他们的定义。这两个文件位于同一目录中。我制作了一个visual studio项目并包含头文件。当我使用头文件中声明的函数时。该程序给我链接错误(LNK2019)。我插入包含标题和C文件的目录的路径包含其他目录。但问题仍然存在。我该如何解决这个问题?
由于
答案 0 :(得分:0)
不需要使用extern关键字声明函数。这是多余的。
您的错误消息告诉您,您定义的函数之一(不仅仅是声明)引用了一个extern变量,但是声明该变量的源文件(即,在没有extern关键字的情况下声明它的地方)不是被联系起来。
答案 1 :(得分:0)
您是否在Visual Studio项目文件中包含了包含函数定义的C源文件?我相信链接器抱怨它无法找到函数定义
答案 2 :(得分:0)
重要的是将.c
文件添加到项目/解决方案中。这就是项目的目的:引用所有必要的实现文件(即.c
文件)。显然,你没有这样做。因此错误。
您无需将标头文件(即.h
文件)添加到项目/解决方案中。头文件通常会添加到项目中以方便使用,因此您可以在一个位置看到它们。否则,完全没必要。
答案 3 :(得分:0)
假设xx.h
(prog.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