我是一个真正的初学者,我使用Visual Studio在C ++中编程。 我有一个简单的cpp代码,它可以回忆一些用.c和.h文件编写的函数。我通过#include指令包含该文件,IDE“看到”该函数。 当我编译时,我得到了这个
错误7错误LNK2019:未解析的外部符号_IMUsendAccelToFIFO在函数_main D中引用:\ Cprojects \ Pencil \ Pencil \ Pencil.obj Pencil
我在这里缺少什么?
谢谢大家!
答案 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(代码由供应商生成)并且它在第一次尝试时起作用!可能存在一些反向兼容性问题..