使用asn.1生成的源文件时c函数的多重定义

时间:2013-04-23 09:37:03

标签: c asn.1

我有三个.asn文件。在这三个文件由asn.1编译器编译之后,每个文件在输出文件夹中都有一个相应的目录。在每个文件夹中,有许多由asn.1编译器生成的C源文件。总有一个.c文件与.asn文件同名(扩展名除外,即test.asn和test.c)。在这个文件中,定义了一些函数;例如asn_allocasn_free等。

因此,有三个文件实现asn_allocasn_free函数。我将在C项目中使用所有生成的C文件。

问题是,asn_alloc函数在三个地方定义。这就是我收到编译器错误的原因:

  

功能的多重定义

我该如何处理这个问题?我认为编辑生成的源文件不是一个好主意。

1 个答案:

答案 0 :(得分:0)

此问题特定于您使用的ASN.1工具。使用一些ASN.1工具(例如http://www.oss.com处的工具),您可以在同一编译中包含所有.asn文件,以便生成一个带有消除歧义的名称的.c文件,或者您可以使用每个编译的-prefix xxx选项,其中每个ASN.1编译的xxx不同,从而导致生成的名称以xxx为前缀,因此不会发生冲突。