2016-04-18 10 views
2

誰かが私にMSVCリンケージエラーを一般的に読む方法を説明できますか?MSVC C++リンケージエラーを読むにはどうすればいいですか

私が知っているのは、私のコードのどこかで、私がそこにないものを動的にリンクしようとしていることを意味します。私が理解したいと思いますどのような

は私が中にDLLIMPORTを残しているモジュールを正確に作業できるように、適切にエラーメッセージを読み取る方法である。

Error LNK2019 unresolved external symbol "__declspec(dllimport) public: enum SILLY::PixelFormat __cdecl SILLY::Image::getSourcePixelFormat(void)const " ([email protected]@[email protected]@[email protected]@XZ) referenced in function "public: virtual class CEGUI::Texture * __cdecl CEGUI::SILLYImageCodec::load(class CEGUI::RawDataContainer const &,class CEGUI::Texture *)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) helloworldui C:\Users\XXXXXX\Documents\Audio Development\evil-sounds\build\helloworldui\cegui64sd.lib(ImageCodec.cpp.obj)1

私はそれがあることを意味だと思いますCEGUI::SILLYImageCodec::loadは、静的ライブラリをロードするときに、SILLY:Image::getSourcePixelFormatをdllとしてロードしようとしています。

[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Zビットは私を投げ捨てています - それは後方にあるようです。

答えて

2

これは、関数CEGUI::SILLYImageCodec::loadで呼び出された(または参照される)関数SILLY::Image::getSourcePixelFormatがリンカーによって見つからないことを意味します。

エラーは、静的対インポートライブラリとはほとんど関係がありません。見つかったライブラリにはエラーがありません。見つからなければ、リンカはあなたの場所に関係なく同じエラーを生成します機能が意図された。リンカに使用したいライブラリを用意していない可能性があるため、エラーが発生する可能性があります(これは間違いの可能性がありますが、原因はホスト全体であるsee here for moreによって引き起こされる可能性があります)。

名前のマングリングは、名前のデマングラーを書きたくない場合は煩雑になる可能性がありますが、一般的に無視することができます(代わりにかなりのプリント名を探してください)。

0

すべての '@'記号が付いたビットは、変更された名前です。リンカがすでにあなたのためにそれをdemangledとして、一般的にこれを無視することができます。 dllimportがSILLY :: Imageクラスにアタッチされているようです。おそらく、 'class'とクラス名の間のマクロの形です。

関連する問題