为什么链接.cc文件在make文件中起作用,但是链接.c文件却不起作用?

问题描述 投票:0回答:1

我正在从tensorflow回购中处理一个很大的Makefile,我需要添加一个文件链接。

经过相当多的调试链接错误之后,我发现如果我的文件以.cc结尾,则链接错误消失,而在链接.c文件时,会出现错误(文件内容保持不变)。

我正在将文件链接到Makefile.inc文件中:

.
.
.
FL_SRCS := \
tensorflow/lite/vis_mi/main.cc \
myFunctions.c \ -->>>>IF I CHANGE THE FILENAME TO myFunctions.cc and link to this .cc file here, it works!!
.
.
.
# Builds a standalone binary.
$(eval $(call vis_test,vis_mi,\
$(FL_SRCS),$(FL_HDRS)))

使用.c结尾的链接错误以:结尾>]

tensorflow/lite/vis_mi/main.o: In function `main':
tensorflow/lite/vis_mi/main.cc:183: undefined reference to `printMsg()'
../downloads/gcc_embedded/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld: link errors found, deleting executable `tensorflow/lite/vis_mi'
collect2: error: ld returned 1 exit status
gmake: *** [tensorflow/lite/vis_mi/Makefile.inc:578: tensorflow/lite/vis_mi/bin/micro_speech] Error 1

。c文件代码:

#include <stdio.h>
#include "myFunctions.h"


void printMsg(){
    //do something here
}

和头文件:

#ifndef MYFUNCTIONS_H
#define MYFUNCTIONS_H

void printMsg();
#endif /* MYFUNCTIONS_H */

如何添加以.c结尾的文件? Makefile对我来说还很新,并且不想包含所有详细信息,如果您需要Makefile中的更多详细信息来回答这个问题,我很乐意编辑我的帖子。

我正在从tensorflow回购中处理一个很大的Makefile,我需要添加一个文件链接。在对链接错误进行了大量调试之后,我发现如果文件以.cc结尾,则链接...

c makefile gnu-make tensorflow-lite cc
1个回答
0
投票

C和C ++函数的名称解析是不同的。有时这会给同时也是有效的“ C ++”的“ C”代码造成问题。例如:

© www.soinside.com 2019 - 2024. All rights reserved.