【C言語】エラー:lnk2019「未解決の外部シンボルが参照されました」と表示される原因と対処法について解説

C言語でプログラムを作成していると、エラー「LNK2019: 未解決の外部シンボルが参照されました」というメッセージが表示されることがあります。

このエラーは、コンパイル時に必要な関数の実態が見つからなかった場合に発生します。

本記事では、このエラーの原因と対処法について詳しく解説します。C言語初心者でも理解しやすいよう、サンプルコードを交えて説明します。

目次

エラーlnk2019とは

エラーlnk2019は、Visual Studioなどの開発環境でC言語プログラムをビルドする際に発生するエラーの一つです。このエラーは、未解決の外部シンボルが参照されたことを示しています。

エラーlnk2019が表示される原因

具体的には、関数のプロトタイプ宣言があるにもかかわらず、その実装が見つからない場合に発生します。

ライブラリの不足

別の原因は、必要なライブラリファイルがプログラム内でリンクされていないことです。

ライブラリファイルには、関数や変数の実装部分が含まれています。

そのため、必要なライブラリファイルをリンクしないと、関数や変数の実装部分を見つけることができず、エラーlnk2019が発生します。

関数の定義の不足

関数をプロトタイプ宣言しているにも関わらず、その処理を実装していない場合にも発生します。

#include <stdio.h>

int sum(int a, int b);

int main() {
    int num = sum(2,3);
    return 0;
}

この場合、3行目でプロトタイプ宣言されているsum関数を6行目で呼び出そうとしていますが、肝心の処理部分の実装を忘れています。

この場合、関数の定義は存在するけど中身がない(処理が書かれていない)ため、エラー lnk2019:未解決のシンボルが参照されましたのエラーが発生してコンパイルに失敗します。

エラーlnk2019の対処法

エラーlnk2019が表示された場合、以下の対処法を試してみることができます。

ライブラリの追加

エラーlnk2019が表示された場合、必要なライブラリファイルが不足している可能性があります。その場合は、必要なライブラリファイルを追加することで解決することができます。

関数の実装の追加

自分で定義した関数でエラーlnk2019が表示された場合、関数の実装を忘れているので実装しましょう。

動作確認したいだけなら以下のような無意味なコードでも構いません。

int sum(int a, int b){
    return 0;
}

プロジェクトの設定の修正

エラーlnk2019が表示された場合、プロジェクト設定に問題があってコンパイル時に必要なファイルが不足している可能性もあります。その場合は、プロジェクト設定を修正することで解決することができます。

以上の対処法を試しても問題を解決しない場合は、コード自体に問題やバグがある可能性も考えられます。このような場合はコード全体を見直すか、他の開発者に相談してみましょう。

終わりに

以上が、C言語におけるエラーlnk2019と未解決の外部シンボルについての解説でした。

このエラーが発生した場合は、まず、エラーメッセージから問題の関数名を特定し、その関数が実装されているかどうかを確認して対処することが重要です。

目次