Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 未定义的符号,即使包含头文件?_C_Keil - Fatal编程技术网

C 未定义的符号,即使包含头文件?

C 未定义的符号,即使包含头文件?,c,keil,C,Keil,当我试图编译我的代码时,我得到了错误: .\Objects\Lab4.axf: Error: L6218E: Undefined symbol l_init (referred from lab4_t0.o). .\Objects\Lab4.axf: Error: L6218E: Undefined symbol l_lock (referred from lab4_t0.o). .\Objects\Lab4.axf: Error: L6218E: Undefined symbol l_unlo

当我试图编译我的代码时,我得到了错误:

.\Objects\Lab4.axf: Error: L6218E: Undefined symbol l_init (referred from lab4_t0.o).
.\Objects\Lab4.axf: Error: L6218E: Undefined symbol l_lock (referred from lab4_t0.o).
.\Objects\Lab4.axf: Error: L6218E: Undefined symbol l_unlock (referred from lab4_t0.o).
我读到“声明函数时可能会出现未定义的符号错误(如
lock.h
中的lock函数),但它没有正确实现。”但是我觉得我正在正确地实现
lock.h
中的所有函数,因为所有函数都是
void
类型,并且我不
返回任何东西。所以我不知道我会做错什么来得到这个错误

任何帮助都将不胜感激

注意:如果需要提供更多代码,请告诉我。我不认为我需要写我在
lock.h
的函数实现中放的东西,因为我觉得你需要知道的是函数实现没有返回任何东西,但是如果我需要包含它,请告诉我

代码 lock.c

#include "lock.h"

extern process_t * current_process; 
extern process_t * process_queue;

void l_init(lock_t* l){
    //Does stuff but never type return or return anything
}

void l_lock(lock_t* l){
    //Does stuff but never type return or return anything
}

void l_unlock(lock_t* l){
    //Does stuff but never type return or return anything
}
#include "3140_concur.h"
#include <stdlib.h>
#include "process.h"
#include "utils.h"
#include "lock.h"

lock_t l;

\\uses functions in lock.h
lock.h

#ifndef __LOCK_H_INCLUDED__
#define __LOCK_H_INCLUDED__

#include "3140_concur.h"
#include "shared_structs.h"

void l_init(lock_t* l);

void l_lock(lock_t* l);

void l_unlock(lock_t* l);

#endif /* __LOCK_H_INCLUDED */
#ifndef __3140_CONCUR_H__
#define __3140_CONCUR_H__

#include <stdlib.h>
#include <fsl_device_registers.h>
#include "process.h"

void process_blocked (void);

void process_terminated (void);

unsigned int * process_stack_init (void (*f)(void), int n);

void process_stack_free (unsigned int *sp, int n);

void process_begin (void);

#endif
#include <stdlib.h>
#include <fsl_device_registers.h>
#include "3140_concur.h"

struct process_state;
typedef struct process_state process_t;

unsigned int * process_select (unsigned int * cursp);

extern process_t * current_process; 
extern process_t * process_queue;

void process_start (void);

int process_create (void (*f)(void), int n);
3140_concur.c

#include "lock.h"

extern process_t * current_process; 
extern process_t * process_queue;

void l_init(lock_t* l){
    //Does stuff but never type return or return anything
}

void l_lock(lock_t* l){
    //Does stuff but never type return or return anything
}

void l_unlock(lock_t* l){
    //Does stuff but never type return or return anything
}
#include "3140_concur.h"
#include <stdlib.h>
#include "process.h"
#include "utils.h"
#include "lock.h"

lock_t l;

\\uses functions in lock.h
lab4_t0.c

#include "lock.h"

extern process_t * current_process; 
extern process_t * process_queue;

void l_init(lock_t* l){
    //Does stuff but never type return or return anything
}

void l_lock(lock_t* l){
    //Does stuff but never type return or return anything
}

void l_unlock(lock_t* l){
    //Does stuff but never type return or return anything
}
#include "3140_concur.h"
#include <stdlib.h>
#include "process.h"
#include "utils.h"
#include "lock.h"

lock_t l;

\\uses functions in lock.h
更新 构建输出

*** Using Compiler 'V5.06 update 4 (build 422)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'Target 1'
compiling 3140_concur.c...
compiling lab4_t0.c...
lab4_t0.c(42): warning:  #111-D: statement is unreachable
        return 0;       
lab4_t0.c: 1 warning, 0 errors
compiling process.c...
process.c(100): warning:  #1-D: last line of file ends without a newline
  }
process.c: 1 warning, 0 errors
linking...
.\Objects\Lab4.axf: Error: L6218E: Undefined symbol l_init (referred from lab4_t0.o).
.\Objects\Lab4.axf: Error: L6218E: Undefined symbol l_lock (referred from lab4_t0.o).
.\Objects\Lab4.axf: Error: L6218E: Undefined symbol l_unlock (referred from lab4_t0.o).
Not enough information to list image symbols.
Finished: 1 information, 0 warning and 3 error messages.
".\Objects\Lab4.axf" - 3 Error(s), 2 Warning(s).
Target not created.
Build Time Elapsed:  00:00:39

多亏了@AjayBrahmakshatriya,我才没有在我的项目中添加
lock.c
。一切都解决了。唷。

多亏了@AjayBrahmakshatriya,我才发现我没有在我的项目中添加
lock.c
。一切都解决了。Whew.

头文件在链接器错误时通常不存在。您需要将库或对象文件指定给定义了所需符号的链接器。@oklas对不起,我不明白。你能详细说明一下我的代码需要做什么吗?@15ongm你能告诉我你是如何编译代码的吗?很可能您在链接时没有使用lock.o。最可能的副本是您的代码没有错误,也没有任何要在其术语中指定的内容。这是生成配置问题。头文件在链接器错误时通常不存在。您需要将库或对象文件指定给定义了所需符号的链接器。@oklas对不起,我不明白。你能详细说明一下我的代码需要做什么吗?@15ongm你能告诉我你是如何编译代码的吗?很可能您在链接时没有使用lock.o。最可能的副本是您的代码没有错误,也没有任何要在其术语中指定的内容。这是构建配置问题。