error LNK2001を回避するには?

解決


HoleInOne  2005-03-28 03:15:47  No: 56796

いつもお世話になっております。

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");
}


YuO  2005-03-28 09:03:22  No: 56797

main.cは本当にmain.cですか? main.cppだったりしませんか?


HoleInOne  2005-03-28 09:14:19  No: 56798

main.cpp から main.c に名前変更していました。
main2.c を新規作成し、main.cの内容をカット&ペーストして
コンパイルするとエラーが出ませんでした。

YuOさんどうもありがとうございます。


HoleInOne  2005-03-28 09:15:09  No: 56799

解決チェックを忘れていました。


Blue  2005-03-28 09:17:23  No: 56800

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"については調べてね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加