2016-08-04 36 views
0

Ich verwende emcc/em++, versucht, mehrere LLVM Byte-Codes zu verknüpfen, aber einige von ihnen scheitern.Wie listet man alle Symbole auf, die em ++ gefunden hat?

Das Problem ist, dass es besagt, dass mehrere Symbole nicht gefunden werden.

warning: unresolved symbol: inflateEnd 
warning: unresolved symbol: _ZN6Assimp3FBX6ObjectC2EyRKNS0_7ElementERKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE 
warning: unresolved symbol: inflateInit_ 
warning: unresolved symbol: _ZN6Assimp3FBX6ObjectD2Ev 
warning: unresolved symbol: inflate 

Es scheint, dass das Symbol inflate nicht behoben wurde, aber es existiert sicherlich in unzip.c.o.

$ file unzip.c.o 
unzip.c.o: LLVM IR bitcode 
$ llvm-nm unzip.c.o 
     U crc32 
-------- t decrypt_byte 
     U fill_fopen_filefunc 
     U free 
     U get_crc_table 
     U inflate 
     U inflateEnd 
     U inflateInit2_ 
-------- t init_keys 
     U malloc 
     U strcmp 
-------- t strcmpcasenosensitive_internal 
     U strlen 
-------- T unzClose 
-------- T unzCloseCurrentFile 
-------- T unzGetCurrentFileInfo 
-------- T unzGetFilePos 
-------- T unzGetGlobalComment 
-------- T unzGetGlobalInfo 
-------- T unzGetLocalExtrafield 
-------- T unzGetOffset 
-------- T unzGoToFilePos 
-------- T unzGoToFirstFile 
-------- T unzGoToNextFile 
-------- T unzLocateFile 
-------- T unzOpen 
-------- T unzOpen2 
-------- T unzOpenCurrentFile 
-------- T unzOpenCurrentFile2 
-------- T unzOpenCurrentFile3 
-------- T unzOpenCurrentFilePassword 
-------- T unzReadCurrentFile 
-------- T unzSetOffset 
-------- T unzStringFileNameCompare 
-------- D unz_copyright 
-------- T unzeof 
-------- t unzlocal_CheckCurrentFileCoherencyHeader 
-------- t unzlocal_DosDateToTmuDate 
-------- t unzlocal_GetCurrentFileInfoInternal 
-------- t unzlocal_SearchCentralDir 
-------- t unzlocal_getByte 
-------- t unzlocal_getLong 
-------- t unzlocal_getShort 
-------- T unztell 
-------- t update_keys 

Tatsächlich gibt es Möglichkeiten, um zu sehen, was em++ als Symbol aufgelöst hat? Es wird besser sein, wenn ich den Grund verstehen kann, warum Symbole in unzip.c.o von em++ ignoriert wurden.

+1

'U aufblasen' bedeutet, dass das Symbol referenziert, aber nicht definiert ist. –

Antwort

1

Die Ausgabe von llvm-nm zeigt deutlich, dass diese Datei das Symbol nicht enthält.

Versuchen Sie, alle Projektdateien, die von Ihrem Projekt erstellt wurden, in einer llvm-nm-Ansicht auszuführen, um sicherzugehen, dass Sie diese fehlenden Symbole definiert haben. Grep kann helfen.