我自己写一个EDMA的工程,out的格式是COFF;由于Starterware里面默认的是ELF格式编译的库文件,所以我自己把库文件的输出格式改为COFF格式重新编译了一个库文件,但是在我自己工程里面引用时,编译报错。
undefined first referenced symbol in file ——— —————- _EDMAVersionGet ../lib/drivers.lib<edma.obj>
error #10234-D: unresolved symbols remain
请问下有什么解决办法没?
Shine:
请问你这个库加到工程里吗?请看下面的错误解释。http://processors.wiki.ti.com/index.php/Compiler/diagnostic_messages/10234
Tony Tang:
#1. 为什么不也用Elf格式呢?这样就省了麻烦了。
#2. 你这个问题是因为这个函数没有找到:_EDMAVersionGet,这个函数是在drivers.lib里调用到了,而不是在这个库里。把EDMAVersionGet所在的库按coff重编一下。
user3823702:
回复 Tony Tang:
Tony Tang 你好!我们是在上位机里面做了解析OUT的程序,以前一直用的COFF格式的,为了不改解析程序就没用ELF格式的;还有第二点,我进入driver的工程里面,点开properties设置里面没有看到有链接别的库文件,请问下这个EDMAVersionGet具体是在哪个库里面?
Tony Tang:
回复 user3823702:
在platform lib里,尽管是个没什么实现意义的函数。
user3823702:
回复 Shine:
库文件已经链接进去了,然后头文件我也检查了都加进去了。
Tony Tang:
回复 user3823702:
这个platform按coff重编了没有?
user3823702:
回复 Tony Tang:
你好!我找到了这个platform按COFF格式编译了一遍,然后再把driver又按COFF格式编译了一遍,再把编译完成的LIB文件链接到我自己的工程中,还是会出现这个错误。是不是我需要在driver工程里面设置来引用PLATFORM,才能消除这个错误?
Tony Tang:
回复 user3823702:
在edma.h里申明的。
user3823702:
回复 Tony Tang:
找到了声明的,但是还是没有用,我直接把EDMA.c里面的那个函数屏蔽掉了,再编译,然后就可以用了。