いつもお世話になっております。
VC++6.0のWin32 Console Applicationで
以下の3つのファイルをコンパイルしたのですが
--------------------構成: main - Win32 Debug--------------------
コンパイル中...
func.c
リンク中...
main.obj : error LNK2001: 外部シンボル ""void __cdecl func(void)" (?func@@YAXXZ)" は未解決です
Debug/main.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
main.exe - エラー 2、警告 0
----------------------------------------------------------------
と表示されてしまいます。
プロジェクトへの追加はしたはずなのですが、
何が不足しているのでしょうか。
/*************** main.c ***************/
#include "func.h"
void main(void)
{
func();
}
/*************** func.h ***************/
#ifndef INCLUDED_FUNC_H
#define INCLUDED_FUNC_H
void func(void);
#endif
/*************** func.c ***************/
#include <stdio.h>
#include "func.h"
void func(void)
{
printf("ABC");
}
main.cは本当にmain.cですか? main.cppだったりしませんか?
main.cpp から main.c に名前変更していました。
main2.c を新規作成し、main.cの内容をカット&ペーストして
コンパイルするとエラーが出ませんでした。
YuOさんどうもありがとうございます。
解決チェックを忘れていました。
main.cpp から func を使う場合は func.h を
#ifndef INCLUDED_FUNC_H
#define INCLUDED_FUNC_H
#ifdef __cplusplus
extern "C"
{
#endif
void func( void );
#ifdef __cplusplus
}
#endif
#endif
としてあげればOKです。
extern "C"については調べてね。
ツイート | ![]() |