C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■98284 / 親階層)  .cppと.cの混在で外部シンボルが未解決
□投稿者/ 身すがら (1回)-(2021/10/28(Thu) 10:47:42)

分類:[.NET 全般] 

.cppと.cを混在させてビルドすると外部シンボルが未解決になります。
教えてください。

【.cppのコード】
// 前略
extern int a, b, c;
extern void test();

void CMFCApplication1Dlg::OnBnClickedButtonStart()
{
	// 初期設定
	a = 1;	
	b = 2;	

	// .cを実行
	test();

	// 結果表示
	TRACE("c=%d\n", c);
}

【.cのコード】
int a, b, c;

void test()
{
	c = a + b;
}

【ビルド結果】
1>MFCApplication1Dlg.obj : error LNK2019: 未解決の外部シンボル "void __cdecl test(void)" (?test@@YAXXZ) が関数 "public: void __thiscall CMFCApplication1Dlg::OnBnClickedButtonStart(void)" (?OnBnClickedButtonStart@CMFCApplication1Dlg@@QAEXXZ) で参照されました。
1>MFCApplication1Dlg.obj : error LNK2001: 外部シンボル ""int a" (?a@@3HA)" は未解決です。
1>MFCApplication1Dlg.obj : error LNK2001: 外部シンボル ""int b" (?b@@3HA)" は未解決です。
1>MFCApplication1Dlg.obj : error LNK2001: 外部シンボル ""int c" (?c@@3HA)" は未解決です。
1>D:\TEMP\MFCApplication1\Debug\MFCApplication1.exe : fatal error LNK1120: 4 件の未解決の外部参照

【備考】
ビルド後、.cに対応する.objは一応作られています。
.cの拡張子を.cppに変更すると、ビルドできて期待した動作をします。
できれば.cのまま扱いたいのですが、方法がありますでしょうか。

【環境】Visual Studion 2015 MFCアプリケーション

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: .cppと.cの混在で外部シンボルが未解決 /とっちゃん
 
上記関連ツリー

.cppと.cの混在で外部シンボルが未解決 / 身すがら (21/10/28(Thu) 10:47) #98284 ←Now
Re[1]: .cppと.cの混在で外部シンボルが未解決 / とっちゃん (21/10/28(Thu) 11:56) #98285
  └ Re[2]: .cppと.cの混在で外部シンボルが未解決 / 身すがら (21/10/29(Fri) 10:17) #98298 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信