実現したいこと
同じソリューション内の別プロジェクトの関数を使用する方法
発生している問題・分からないこと
SampleProject内にあるCalcファイルに定義してあるsum関数を
別プロジェクト(Test)で呼び出してみたのですが、calc.hをインクルードするとビルドエラーが発生
calc.cppをインクルードするとビルドが通り動きます。
ヘッダーファイルを呼び出しでビルドエラーになって、ソースファイルを呼び出してビルドが通るのが気持ち悪いので、原因を知りたいです。
■ビルド成功画像

■ビルド失敗画像

エラーメッセージ
error
1重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 詳細 2エラー LNK2019 未解決の外部シンボル "int __cdecl sum(int,int)" (?sum@@YAHHH@Z) が関数 main で参照されました Test C:\Users\tomoy\Documents\Visual Studio 2022\Project\SampleProject\Test\Test.obj 1 3 4重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 詳細 5エラー LNK1120 1 件の未解決の外部参照 Test C:\Users\tomoy\Documents\Visual Studio 2022\Project\SampleProject\x64\Debug\Test.exe 1 6
該当のソースコード
Calc.cpp
1#include "Calc.h" 2 3int sum(int a, int b) 4{ 5 return a + b; 6} 7
Calc.h
1#pragma once 2 3int sum(int a, int b);
Test.cpp
1#include <iostream> 2#include "Calc.h" 3 4int main() 5{ 6 std::cout << "Hello World!\n"; 7 std::cout << sum(5, 5); 8}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
解決できるような情報は見つけられませんでした。
補足
特になし
その SampleProject は何のプロジェクトなのでしょう?
(SampleProject をビルドした結果として何ができる? exe? lib? その他?)
それ次第で話が異なるのではないか,という気がします.
> calc.cppをインクルードするとビルドが通り動きます。
> ヘッダーファイルを呼び出しでビルドエラーになって、ソースファイルを呼び出してビルドが通るのが気持ち悪いので、原因を知りたいです。
恐らくなんですが、質問者さんはソースファイルをコンパイルするとオブジェクトファイル(*.obj)ができ、それらのオブジェクトファイルをリンクして実行ファイル(*.exeとか*.dll)が
できる。それら一連の過程がビルド、ということをまだご存じないかピンと来ていないのかと思います。
#includeでソースファイルを呼び出す、と言うのはちょっと変で、#includeでその位置に指定のファイルを取り込むだけです。(言い方だけの問題ですけど)
ソリューションとプロジェクトの関係を何となくでも理解してからいただいた回答を読むと良いかもしれませんね。
https://learn.microsoft.com/ja-jp/cpp/ide/walkthrough-working-with-projects-and-solutions-cpp?view=msvc-170
回答2件
あなたの回答
tips
プレビュー