2016-08-04 7 views
0

私はemcc/em++を使用していますが、いくつかのLLVMバイトコードをリンクしようとしましたが、それらのいくつかは失敗します。em ++が見つけたすべてのシンボルを一覧表示するには?

$ em++ -std=c++11 \ 
-o _assimp.js \ 
-O2 \ 
--memory-init-file 0 \ 
-I../include \ 
code/CMakeFiles/assimp.dir/*.o \ 
code/CMakeFiles/assimp.dir/__/contrib/ConvertUTF/*.o \ 
code/CMakeFiles/assimp.dir/__/contrib/unzip/unzip.c.o \ 
../port/emscripten/emassimp.cpp 

問題は、いくつかの記号が見つからないということです。

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 

そのシンボルinflateが解決されなかったようだが、それは確かに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 

em++がシンボルとして解決したかを確認するにはどんな方法がありますか? unzip.c.oのシンボルが無視された理由は、em++でわかります。

+1

'U inflate'はシンボルが参照されていますが、定義されていないことを意味します。 –

答えて

1

llvm-nmの出力は、このファイルにシンボルがないことを明確に示しています。

プロジェクトで作成されたすべてのオブジェクトファイルに対してllvm-nmを実行して、これらのシンボルが欠落していることを確認してください。 grepを使用すると役立ちます。

関連する問題