Microsoft C库中的重复符号

rwa*_*ace 9 c windows linker portable-executable visual-c++

我正在为Windows PE格式的目标文件编写一个链接器,我已经到了可以将Microsoft编译器生成的目标文件链接在一起的阶段,但是当我尝试与libcmt.lib链接时,我得到了很多重复符号.

例如,cosl由库中的三个不同对象定义.所有三个都指向不同位置的定义,并且所有三个看起来都是真实的,例如它们指向命名的文本段.text$mn并具有存储类IMAGE_SYM_CLASS_EXTERNAL.

是否是这些是备用版本的情况,并且链接器应该根据某些标准选择一个,或者我是否误解了关于PE库格式的语义?

CDa*_*ahn 2

正如评论中提到的,OP 没有正确处理 COMDAT 部分。 http://download.microsoft.com/download/e/b/a/eba1050f-a31d-436b-9281-92cdfeae4b45/pecoff.doc