アプリ版:「スタンプのみでお礼する」機能のリリースについて

C++/MFCで以下のようなエラーが出て困っております。
だれか、原因の分かる方はいらっしゃいますでしょうか?

1>Test.obj : error LNK2001: 外部シンボル ""public: __thiscall CSampleApp::CSampleApp(void)" (??0CSampleApp@@QAE@XZ)" は未解決です。
1>C:Test\src\Test\Release\Test.exe : fatal error LNK1120: 外部参照 1 が未解決です。

エラーのあったソースコード
---------------------------------------------------------
#include "../Sample/Sample.h"

void Test::Onfile()
{
std::auto_ptr<CSampleApp> p( new CSampleApp() );//←このソースコードを追加するとエラーになります。
}

---------------------------------------------------------

Sample.h
---------------------------------------------------------

class CSampleApp : public CWinApp
{
public:
CSampleApp();
};
extern CSampleApp atTheApp;
----------------------------------------------------------

A 回答 (2件)

リンカは、CSampleApp::CSampleApp() がないといっています。


(new で、コンストラクタが使われるのに、実装がないのでエラーになったのです。)
つまり、

> class CSampleApp : public CWinApp
> {
> public:
> CSampleApp(); // こいつが未実装です。
> };

ということです。
普通は、Sample.h 内にインライン形式でかかれるか、Sample.cpp 内に書きます。
ま、Sample.h 内に書いた例だと、

class CSampleApp : public CWinApp
{
public:
CSampleApp()
{
// やることねー.しごとくれー.
}
};

こんな感じです。
    • good
    • 0
この回答へのお礼

確かに、実装のソースコードが入ってませんでした。
ありがとうございます。

お礼日時:2011/04/21 23:39

LNK2001で検索するといっぱい出てきそうですが……



CSampleApp()の本体が含まれたオブジェクトファイル(ライブラリファイル)がリンカに渡されていないので、
実行ファイルが生成できません。
ってことになります。

ライブラリを追加するか、ソースをプロジェクトに追加してビルドするようにするか…になるかと。
# Sample.h に実体が記述されているのならばそんな必要はない…でしょうが。それならリンクエラーにはならないでしょう。
    • good
    • 0
この回答へのお礼

言われていることをやってみたのですが、解決しませんでした。
なにか、難しい問題でもあるのでしょうか?

お礼日時:2011/04/21 14:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!