2013-04-23 46 views
0

我有三個.asn文件。在asn.1編譯器編譯這三個文件後,每個文件在輸出文件夾中都有相應的目錄。在每個文件夾中,有許多由asn.1編譯器生成的C源文件。總是有一個與.asn文件名稱相同的.c文件(擴展名除外,即test.asn和test.c)。在這個文件中,定義了一些函數。如asn_alloc,asn_free等。使用asn.1生成源文件時c函數的多重定義

因此,有三個文件實現asn_allocasn_free函數。我將在C項目中使用所有生成的C文件。

問題是,asn_alloc函數是在三個地方定義的。這就是我得到編譯器錯誤的原因:

multiple definition of function

我該如何處理這個問題?我認爲編輯生成的源文件不是一個好主意。

回答

0

此問題特定於您正在使用的ASN.1工具。使用一些ASN.1工具(例如http://www.oss.com),可以在同一個編譯中包含所有.asn文件,以便生成一個.c文件,其中所有名稱都可以消除歧義,也可以使用-prefix xxx每個編譯的選項,其中每個ASN.1編譯的xxx不同,從而導致生成的名稱前綴爲xxx,因此不會發生衝突。