提问人:Jac 提问时间:11/12/2009 最后编辑:Grace NoteJac 更新时间:7/15/2010 访问量:6007
C++ 未解析的符号
C++ unresolved symbols
问:
我在项目中链接时收到一个未解决的符号错误。我链接到外部库,是的,我已经正确设置了配置,但是在调试中,它会为外部库中的每个类输出以下错误:
error LNK2001: unresolved external symbol __CAP_EXIT_Function
proj 使用与外部库相同的运行时 dll,并链接到 lib 的调试版本。
关于去哪里有什么线索吗?
顺便说一句,我使用 VS2008
谢谢
答:
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++,但库的主要接口是函数调用
评论