私は愚かな問題があり、どこから来たのかわかりません。 #ifndefディレクティブを使って#includeがすべて再定義されていないことを確認しました。悲しいことに、起こっている3人のために。ここに私の複数のファイルは、アーチ:#ifndef命令で複数のcコードのシンボルを再定義しました
t_include.h
#ifndef T_INCLUDE_H_
#define T_INCLUDE_H_
/* Project specific dependencies*/
#include "utilities.h"
#include "fsp_function.h"
#include "ti/csl/csl_tsc.h"
#include "ti/csl/csl_cache.h"
#include "ti/csl/csl_cacheAux.h"
#include "ti_sp_complex_convolution_A_input1.h"
#include "ti_sp_complex_convolution_A_input2.h"
#include "to_sp_complex_convolution_A_output.h"
#endif /* T_INCLUDE_H_ */
をt_function.h
#ifndef T_FUNCTION_H_
#define T_FUNCTION_H_
#include "t_include.h"
/*output vector*/
#define INPUT1A_LENGTH 5000
#define INPUT2A_LENGTH 2800
#define OUTPUTA_LENGTH 2202
extern FLOAT32 sp_complex_convolution_A_output_thales[OUTPUTA_LENGTH];
/*misc parameter*/
#define CPU_CLOCK_KHZ 1400000
#define CPU_CLOCK_MS 1/CPU_CLOCK_KHZ
#define FIR_NB_MACS INPUT1A_LENGTH * OUTPUTA_LENGTH /* FIR algorithm complexity */
#define NB_OF_REP 10
#define UMA_L2CACHE_L1DCACHE 0
/* Project specific types */
typedef struct{
ect...
そして今、Cファイルのみt_function.hを含める:
t_function.c
を/* Dependencies */
#include "t_function.h"
FLOAT32 sp_complex_convolution_A_output_thales[OUTPUTA_LENGTH];
/* API */
etc...
そして
/* dependencies */
#include "t_function.h"
void main(void) {
etc...
t_main_function.cそれはしかし、ここでリンク時にエラーが来て動作するはずです:
<Linking>
error #10056: symbol "sp_complex_convolution_A_output" redefined: first defined in "./TEST/t_function.obj"; redefined in "./TEST/t_main_function.obj"
error #10056: symbol "sp_complex_convolution_A_input2" redefined: first defined in "./TEST/t_function.obj"; redefined in "./TEST/t_main_function.obj"
error #10056: symbol "sp_complex_convolution_A_input1" redefined: first defined in "./TEST/t_function.obj"; redefined in "./TEST/t_main_function.obj"
error #10056: symbol "sp_complex_convolution_A_output_thales" redefined: first defined in "./TEST/t_function.obj"; redefined in "./TEST/t_main_function.obj"
>> Compilation failure
error #10010: errors encountered during linking; "CONVOLUTION_COMPLEX.out" not built
だから、エラーのみCOM自分の.hの中で定義されている3つのシンボルsp_complex_convolution_A_output、sp_complex_convolution_A_input1とsp_complex_convolution_A_input2から
ti_sp_complex_convolution_A_input1.h
:また#ifndefのディレクティブにより保護されています他の2つについても同じです...
だから私はなぜそれが起こっているのか分かりません。
実際には、私はそれが動作させるようにするために多くのことを変更しようとする前に、これはこれのようなものでした、私は確かにこれがexternの定義でなければならないことに同意します。 Btwこれはエラーを追加します: 未解決のシンボルsp_complex_convolution_A_output_thales、最初に./TEST/t_function.objで参照されました。 –
@ThéophileLeroy 'extern'は、それが他のところで定義されていることを意味します。それはどこで定義されていますか?ここでは、t_function.cの – sergej
はここにあります。 t_function.c: FLOAT32 sp_complex_convolution_A_output_thales [OUTPUTA_LENGTH]; 問題は3つの他の.hの3つの参照ベクトル –