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

Unresolved external symbol error, even if function is defined and seen by IDE

本文关键字:IDE 定义 符号 外部 错误 未解决 函数      更新时间:2023-10-16

使用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.

杂项文件中的声明:

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

知道怎么了吗?

谢谢!

是否只包含一次头文件?

混合

#ifndef MISC
#define MISC
...
#endif MISC ?