我有 21 个文件,如图所示:
以下 35 个函数在util.h
inside a 的第 364-411 行中声明
#ifndef FlagUtil
#define FlagUtil
#endif
代码块:
Create_Pix, Remove_Pix, my_round, edit_error, check_file, check_dir,
read_config, write_config, write_envi_config, my_randomize, my_random,
my_eps_random, cadd, csub, cmul, cdiv, cpwr, cconj, cimg, crel, cmod, cmod2,
angle, cplx_sinc, PolTypeConfig, init_file_name, memory_alloc, PrintfLine,
CreateUsageHelpDataFormat, CreateUsageHelpDataFormatInput,
init_matrix_block, block_alloc, CheckFreeMemory, CheckFreeMemoryWin32,
CheckFreeMemoryLinux
以下 30 个函数在util_block.h
内部的 第 99-135 行中声明
#ifndef FlagUtilBlock
#define FlagUtilBlock
#endif
代码块:
read_matrix_int, read_matrix_float, read_matrix_cmplx, write_matrix_int,
write_matrix_float, write_matrix_cmplx, read_matrix3d_float,
read_matrix3d_cmplx, write_matrix3d_float, write_matrix3d_cmplx,
read_block_matrix_int, read_block_matrix_float,
read_block_matrix_matrix3d_float, read_block_matrix_cmplx,
write_block_matrix_int, write_block_matrix_float,
write_block_matrix_matrix3d_float, write_block_matrix_cmplx,
write_block_matrix3d_float, write_block_matrix3d_cmplx, read_block_S2_avg,
read_block_S2_noavg, read_block_S2T6_avg, read_block_SPP_avg,
read_block_SPP_noavg, read_block_TCI_avg, read_block_TCI_noavg,
read_block_S2_TCIelt_noavg, read_block_SPP_TCIelt_noavg, average_TCI
以下 35 个函数在util_convert.h
内部的 第 106-149 行中声明
#ifndef FlagUtilConvert
#define FlagUtilConvert
#endif
代码块:
S2_to_C3elt, S2_to_C4elt, S2_to_T3elt, S2_to_T4elt, S2_to_T6elt,
SPP_to_C2elt, SPP_to_T2elt, S2_to_SPP, S2_to_IPP, S2_to_C2, S2_to_C3,
S2_to_C4, S2_to_T2, S2_to_T3, S2_to_T4, S2_to_T6, SPP_to_C2, SPP_to_T2,
SPP_to_IPP, SPP_to_T4, C2_to_IPP, C2_to_T2, T2_to_C2, C4_to_T4, C4_to_C3,
C4_to_T3, C4_to_C2, C4_to_IPP, T4_to_C4, T4_to_C3, T4_to_T3, C3_to_T3,
C3_to_C2, C3_to_IPP, T3_to_C3, T6_to_C3
该文件的内容PolSARproLib.h
是:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#ifdef _WIN32
#include <dos.h>
#include <conio.h>
#endif
/* ROUTINES DECLARATION */
#include "util.h"
#include "util_block.h"
#include "util_convert.h"
#include "graphics.h"
#include "matrix.h"
#include "processing.h"
#include "statistics.h"
#include "sub_aperture.h"
#include "my_utils.h"
该文件的内容PolSARproLib.c
是:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#ifdef _WIN32
#include <dos.h>
#include <conio.h>
#endif
/* ROUTINES DECLARATION */
#include "util.c"
#include "util_block.c"
#include "util_convert.c"
#include "graphics.c"
#include "matrix.c"
#include "processing.c"
#include "statistics.c"
#include "sub_aperture.c"
#include "my_utils.c"
我已将这 21 个文件放在一个名为的文件夹中,并按如下方式Static Project
创建了PolSARproLib.lib
文件,我的机器是 Win 10x64 的机器:(这里我上传了这个项目):
文件graphics.obj
, matrix.obj
, my_utils.obj
, PolSARproLib.lib
, PolSARproLib.obj
, processing.obj
, statistics.obj
, sub_aperture.obj
, util.obj
, util_block.obj
,util_convert.obj
是在项目文件夹中创建的,Debug
没有任何错误,但有一些警告,例如:
1>graphics.obj : warning LNK4006: _write_header_bmp_8bit already defined in
PolSARproLib.obj; second definition ignored
我创建了一个名为的文件夹Arii
,并在子文件夹中放置了以下 22 个文件\Arii\lib
我也将文件arii_anned_3components_decomposition.c
放在文件夹中Arii
:
现在我arii_anned_3components_decomposition
在文件夹中创建项目Arii
如下(这里我已经上传了项目)
在以下 2 张图片中,您可以看到项目的配置。同样,我应该说我正在使用 Win 10x64 机器
将外部库添加到项目中,如下所示:
Properties>C/C++>General>Additional Include directories
.h
我输入放置 头文件的文件夹的路径
Properties>Linker>General>Additional library directories
我输入.lib
放置文件 的文件夹的路径
在
Properties>Linker>Input>Additional Dependencies
我已经输入了这些所需.lib
文件的名称:
这是文件的开头(在 main 函数之前)arii_anned_3components_decomposition.c
:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "omp.h"
#ifdef _WIN32
#include <dos.h>
#include <conio.h>
#endif
/* ROUTINES DECLARATION */
#include "../lib/PolSARproLib.h"
现在我构建解决方案:
不幸的是,我得到了 104 个错误。其中 100 个是关于 , util.h
,util_convert.h
中函数的多重定义util_block.h
(这些函数在问题的开头列出)
错误 1-100 类似:
1>PolSARproLib.lib(PolSARproLib.obj) : error LNK2005: _C3_to_T3 already
defined in PolSARproLib.lib(util_convert.obj)
这里我上传了error and warning file.txt
- 我真的不明白为什么我会收到这些关于代码块
#ifndef #define #endif
已在代码中使用的错误?