C++ 未解析的符号

C++ unresolved symbols

提问人:Jac 提问时间:11/12/2009 最后编辑:Grace NoteJac 更新时间:7/15/2010 访问量:6007

问:

我在项目中链接时收到一个未解决的符号错误。我链接到外部库,是的,我已经正确设置了配置,但是在调试中,它会为外部库中的每个类输出以下错误:

error LNK2001: unresolved external symbol __CAP_EXIT_Function

proj 使用与外部库相同的运行时 dll,并链接到 lib 的调试版本。

关于去哪里有什么线索吗?

顺便说一句,我使用 VS2008

谢谢

C++ 链接器 未解析的外部

评论


答:

1赞 Brian R. Bondy 11/12/2009 #1

您似乎正在使用 /callcap 开关,但未定义回调函数。请参阅上一个链接并实现回调函数。

对于其他库链接错误。检查以确保在链接器属性的附加包含部分中指定 .lib 文件?

此外,如果 vcproj 文件与项目位于同一解决方案中,则可以右键单击项目并为其他库设置依赖项。这样,您就不需要指定上面提到的其他库。

评论

0赞 Jac 11/12/2009
是的,我在包含中指定了它
0赞 Brian R. Bondy 11/12/2009
更新了答案,我认为你的问题是什么。
0赞 Jac 11/12/2009
是的,我也认为是这样,库 proj 设置为在函数调用中使用分析,我删除了它以查看是否是问题所在,但仍然存在相同的错误
0赞 Brian R. Bondy 11/12/2009
我认为它仍然可能在您包含的库中被引用。我认为您仍然需要定义函数。
0赞 Billy ONeal 11/12/2009
杰克,如果这家伙解决了你的问题,请给他打勾!;)
0赞 ChadNC 11/12/2009 #2

是否包含所有可能需要的头文件?您仍然需要添加

#include "MyDll.h"

即使在添加对 dll 的引用并将其所在的目录添加到包含目录路径之后。 然后,您可以像这样使用dll中的函数。

MyDll::MyFunctions::Function();

评论

0赞 Jac 11/12/2009
是的,库头文件包含在预编译头文件中
0赞 Billy ONeal 11/12/2009
标头问题会在编译时引发错误,而不是在链接时抛出错误。
0赞 AndersK 11/12/2009 #3

库是 C 库吗?在这种情况下,您需要标头中函数的外部“C”,也许缺少它?

例如

extern "C"
{
  void foo(); 
   ...
}

   extern "C" void foo();

评论

0赞 Jac 11/12/2009
不,它的 c++,但库的主要接口是函数调用