C ++ #include外部函数问题

时间:2010-11-28 10:23:52

标签: c++ c function linker include

我是一个真正的初学者,我使用Visual Studio在C ++中编程。 我有一个简单的cpp代码,它可以回忆一些用.c和.h文件编写的函数。我通过#include指令包含该文件,IDE“看到”该函数。 当我编译时,我得到了这个

错误7错误LNK2019:未解析的外部符号_IMUsendAccelToFIFO在函数_main D中引用:\ Cprojects \ Pencil \ Pencil \ Pencil.obj Pencil

我在这里缺少什么?

谢谢大家!

5 个答案:

答案 0 :(得分:3)

这是链接器错误,而不是编译器错误。编译器很高兴,它在.h文件中看到了函数声明。链接器不是,它找不到函数的定义

将.c文件添加到项目中。

答案 1 :(得分:0)

您使用的是ghettopilot吗?这是我在网上找到你唯一缺少的功能的唯一参考。如果是,那么您需要在链接选项中包含该库的.lib文件。

答案 2 :(得分:0)

默认情况下,Visual Studio会将.c文件编译为C和.cpp文件作为C ++,这会导致问题,因为如果要从.cpp文件中调用.c文件中定义的函数,则必须将extern "C" { }中的标头,因为编译器会期望所有未声明extern "C"的函数都来自C ++。这是因为名为mangling的实现细节。或者,您可以强制所有文件在项目设置中编译为C或C ++。

答案 3 :(得分:0)

如果在Visual Studio中出现错误,您实际上可以谷歌搜索错误代码,您将获得相当广泛的信息。在这种情况下,谷歌搜索LNK2019会将此MSDN page作为第一个命中,这也提供了一些关于如何获得错误的示例。
您的供应商应该为您提供了一些.lib文件(通常位于名为lib的文件夹中?)。确保通过以下方式将这些内容添加到项目中:

  • 项目>属性>配置属性>链接器>输入> 其他相关性

您还可以查看供应商是否有任何“入门”信息,说明您必须在项目中包含哪些依赖项。
如果您不确定编译器和链接器的作用,pick up a book解释它,或浏览一些free alternatives

答案 4 :(得分:0)

解决!非常感谢你! 我正在使用的库需要构建。我试过但是我不能像以前那样构建它们“堆空间”错误!

我安装了Visual Studio 2005(代码由供应商生成)并且它在第一次尝试时起作用!可能存在一些反向兼容性问题..