VC PlusPlus:Link Error LINK2019 未解決のシンボル…で参照されました。 対処方法 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(ページの作成:「== '''概要''' ==  Visual Studioを使うプログラマなら、一度は目にするエラーです。他人が作ったプロジェクトとか複雑なプロジェ...」)
 
(対処方法)
14行: 14行:
 
 '''1.安全ではない古い関数が使われるパターン'''
 
 '''1.安全ではない古い関数が使われるパターン'''
 
 scanf, printf, strlen, strcmpといったC言語の基本とも言える関数を使ったときに発生します。昨今ではオーバーフローしないような、より安全な関数を使うのが定説になっていますが、勉強のため、ためしにgccとかで主に開発しているプログラマからプログラムをもらってきたときとかに発生します。
 
 scanf, printf, strlen, strcmpといったC言語の基本とも言える関数を使ったときに発生します。昨今ではオーバーフローしないような、より安全な関数を使うのが定説になっていますが、勉強のため、ためしにgccとかで主に開発しているプログラマからプログラムをもらってきたときとかに発生します。
 +
  
 
 メンドクサイ対応方法としては、すべての関数をscanf_sのような最新のMSVC(MicrosoftVisualCpp)の標準libで提供されている関数を使うのがいいのですが、scanf_sに変えて、受け取る文字列のサイズを調整するという作業をすべての基本関数に対して施術しなくてはなりません。それが割かし膨大なプロジェクトである場合、とてもじゃないけど、修正しきれないし、どんなに有能なプログラマでも何度も繰り返して同じことをやるだけにしても、どこかでミスタイプや、計算間違えでバグを起こす原因にもなります。
 
 メンドクサイ対応方法としては、すべての関数をscanf_sのような最新のMSVC(MicrosoftVisualCpp)の標準libで提供されている関数を使うのがいいのですが、scanf_sに変えて、受け取る文字列のサイズを調整するという作業をすべての基本関数に対して施術しなくてはなりません。それが割かし膨大なプロジェクトである場合、とてもじゃないけど、修正しきれないし、どんなに有能なプログラマでも何度も繰り返して同じことをやるだけにしても、どこかでミスタイプや、計算間違えでバグを起こす原因にもなります。
 +
  
 
 そんな時は旧型対応のライブラリを使いましょう。
 
 そんな時は旧型対応のライブラリを使いましょう。
 +
  
 
*旧型のライブラリを使用して解決!
 
*旧型のライブラリを使用して解決!
23行: 26行:
 
::'''legacy_stdio_definitions.lib'''
 
::'''legacy_stdio_definitions.lib'''
 
:を追加します。
 
:を追加します。
 +
 +
 +
 続きはまた気が向いたら書くので記事は増えていく予定。

2021年1月14日 (木) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス