提问人:Flavio 提问时间:3/4/2015 更新时间:3/4/2015 访问量:1879
未解析的外部符号错误,即使 IDE 定义并查看了函数
Unresolved external symbol error, even if function is defined and seen by IDE
问:
使用 Visual C++ 2008,我有一个“未解析的外部符号”,即使使用 IDE 我可以正确查看函数的声明和定义:
错误:
hook_file.obj : error LNK2001: unresolved external symbol "int __cdecl is_directory_objattr(struct _OBJECT_ATTRIBUTES const *)" (?is_directory_objattr@@YAHPBU_OBJECT_ATTRIBUTES@@@Z)
hook_file.cpp中的相关代码:
#include "misc.h"
void handle_new_file(HANDLE file_handle, const OBJECT_ATTRIBUTES *obj)
{
if(is_directory_objattr(obj) == 0 ) {
// etc.
misc.h 文件中的声明:
BOOL is_directory_objattr(const OBJECT_ATTRIBUTES *obj);
misc.cpp 文件中的定义:
#include "misc.h"
BOOL is_directory_objattr(const OBJECT_ATTRIBUTES *obj)
{ //function body here }
我真的不明白链接者在这里有什么要抱怨的。
- 带有函数声明的标头包含在该文件中,该文件 调用函数。
- 具有函数定义的 cpp 文件包括带有声明的头文件。
- 声明和定义是相同的。
- 所有文件都列在项目文件中。
知道怎么了吗?
谢谢!
答:
0赞
Sebastien
3/4/2015
#1
您是否只包含一次头文件?
在 misc.h 中
#ifndef MISC
#define MISC
...
#endif MISC ?
上一个:继承接口时未解析的符号
评论
misc.obj