45167


現在、古いVisual StudioのSolutionをビルドしています。  
全部で100もあったエラーが残りが10個くらいのLINKエラーだけになりました。  
その残りのエラーの一つが次のエラーです。

「エラー LNK2019 未解決の外部シンボル _sprintf が関数 "void __cdecl ****で参照されました。」

「_sprintf」はランタイムライブラリであり、「__cdecl
*****」は「\project\myjpeglib.lib(jerror.obj)」のものです。そしてこの「myjpeglib.lib」は、2006年にビルドされたものです。

この「_sprintf」が当時の呼び出し方から現在の呼び出し方に変わったということは考えられないでしょうか。

よろしくお願いします。


CC BY-SA 4.0
2018-06-29T08:39:18.600
45161
2018-06-29T10:35:10.483
2018-06-29T10:04:36.613
29110
29110
question
c++ windows visual-studio
DLL関数の呼び出しエラーについて


最近のVSでは sprintf() sscanf() 等がインライン化されているので、現在のCランタイムライブラリには含まれていません。  
昔ビルドされたライブラリ等は、昔のCランタイムに存在している実体をリンクしようとするので見つからないというエラーになるのだと想像できます。

色々なページで紹介されている様に、legacy_stdio_definitions.libをリンクするという方法が良いかもしれません。


CC BY-SA 4.0
2018-06-29T10:35:10.483
45167
2018-06-29T10:35:10.483
3793
45161
answer