次のソース ファイルに分割された単純なプロジェクトがあります。
my.h:
#ifndef MY_H
#define MY_H
extern int val;
void print_val();
#endif
my.cpp:
#include "my.h"
#include <iostream>
void print_val()
{
std::cout << val;
}
main.cpp:
#include "my.h"
int main()
{
val = 4;
print_val();
return 0;
}
コンパイルすると、次のエラーが表示されます。
1>main.obj : error LNK2001: unresolved external symbol "int val" (?val@@3HA)
1>my.obj : error LNK2001: unresolved external symbol "int val" (?val@@3HA)
1>c:\...\test.exe : fatal error LNK1120: 1 unresolved externals
これはなぜですか?ヘッダーで変数と関数を宣言し、別のソース ファイルで関数を定義したいだけです。私は Visual C++ 2010 Express を使用しており、プロジェクトは Win32 コンソール アプリです。