未解决的外部符号错误,即使IDE定义并查看了函数

时间:2015-03-03 19:14:16

标签: c++ visual-studio-2008 unresolved-external

使用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文件包含带声明的头文件。
  • 声明和定义相同。
  • 所有文件都列在项目文件中。

任何想法都错了吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您是否只包含一次头文件?

在misc.h中

#ifndef MISC
#define MISC

...

#endif MISC ?