2012-03-09 7 views
6

私は私のライブラリ内の土壌をリンクしていないリンクが、私は、コンパイル時に私は、これらのリンカエラーを取得:追加の依存関係でSOILは正しく

 
1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library 
1>libSOIL.lib(stb_image_aug.o) : error LNK2019: unresolved external symbol __alloca referenced in function _stbi_zlib_decode_noheader_buffer 
1>libSOIL.lib(image_helper.o) : error LNK2019: unresolved external symbol _sqrtf referenced in function _RGBE_to_RGBdivA2 

私はリンクlibSOIL.lib。

答えて

5

未解決のシンボルエラーLNK2019は、libgcc.libまたは他の標準ライブラリ実装(Microsoftオプションの場合はhereを参照)のシンボルからリンクされていません。 allocaとsqrtfはどちらも標準ライブラリ関数です。

標準ライブラリにリンクしていない場合は、それをリンカライブラリパスに追加してリンクします。

上記の警告の警告LNK4098より、標準ライブラリにリンクしている可能性は高くなりますが、リンカーはどのロードをロードするのかを知りません。

この問題が離れて行くようにリンカの引数を推薦している/ NODEFAULTLIBを(特定の標準ライブラリを選択するようにリンカに伝える):「MSVCRT」/ NODEFAULTLIB:「LIBCMT

を追加情報とリソースについては、以下のリンクを参照してください。

+0

Hmm、/ NODEFAULTLIBを追加する:MSVCRTは警告を修正しましたが、同じエラーがまだ残ります。 – Bumrang

7

エラーを修正しました。

私はVC2010を使用していますが、私はVC8ライブラリを構築しました。私はlibSOIL.libの代わりにSOIL.libを追加しました。エラーは消え去った。

+0

私はVC2012(VC11と呼ばれていました)を使用していて、VC9ソリューションを構築していました。 –

+0

私はVC2013を使用しており、VC8ソリューションを構築していました。 – PALEN

4

私は同じ問題(vc120ツールセットでVisual Studio 2013を使用していました)を公式サイトからダウンロードしました。libSOIL.aSOIL.libに改名する代わりに、公式のzipの中でVC8ソリューションを実行しましたあなたはSOIL.libです) 'それを私のプロジェクトにコピーして、問題は解決しました。

+1

これは私にとっても役立ちました。 VS9の代わりにVC9の代わりにVC8 – PALEN