質問: 現在、古いVisual StudioのSolutionをビルドしています。 全部で100もあったエラーが残りが10個くらいのLINKエラーだけになりました。 その残りのエラーの一つが次のエラーです。 「エラー LNK2019 未解決の外部シンボル _sprintf が関数 "void __cdecl ****で参照されました。」 「_sprintf」はランタイムライブラリであり、「__cdecl *****」は「\project\myjpeglib.lib(jerror.obj)」のものです。そしてこの「myjpeglib.lib」は、2006年にビルドされたものです。 この「_sprintf」が当時の呼び出し方から現在の呼び出し方に変わったということは考えられないでしょうか。 よろしくお願いします。
回答: 最近のVSでは sprintf() sscanf() 等がインライン化されているので、現在のCランタイムライブラリには含まれていません。 昔ビルドされたライブラリ等は、昔のCランタイムに存在している実体をリンクしようとするので見つからないというエラーになるのだと想像できます。 色々なページで紹介されている様に、legacy_stdio_definitions.libをリンクするという方法が良いかもしれません。