1

2 つのプロジェクトでソリューションを構築しようとしていますが、次のエラー メッセージが表示されます。

ColliderTest.obj : エラー LNK2028: 未定義のトークン (0A000080) "public: __thiscall Rect::Rect(int)" (??0Rect@@$$FQAE@XZ) が関数 "void __cdecl myFunction(void)" で参照されています (?myFunction @@$$FYAXXZ)

ColliderTest.obj : エラー LNK2019: 未解決の外部シンボル "public: __thiscall Rect::Rect(int)" (??0Rect@@$$FQAE@XZ) が関数 "void __cdecl myFunction(void)" で参照されています (?myFunction@@ $$FYAXXZ)

コード:

  • プロジェクト「コライダー」には、次のファイルがあります。

Collider.h

#pragma once

class Rect{

    int x;
    int y;
    unsigned int w;
    unsigned int h;

public:
    Rect(int x);
};

Collider.cpp

#include "Collider.h"

Rect::Rect(int x){
    this->x = x;
}
  • プロジェクト「ColliderTest」には、プロジェクト Collider への参照と、次のファイルがあります。

ColliderTest.cpp

#include "../app/Collider.h"

void myFunction();

void myFunction(){

    Rect rect(4);
}

また、各プロジェクトには、空の main() 関数を含む main.cpp ファイルがあり、エントリ ポイントに関するコンパイラの苦情を回避します。

4

1 に答える 1

2

両方のプロジェクトに主な機能がありますか?

これは、2 つの実行可能ファイルをビルドしていることを意味します。通常、実行可能ファイルは関数をエクスポートしません。

1 つの実行可能ファイルと 1 つのクラス ライブラリ (dll) が必要です。

ところで: main 関数が空の場合、プログラムが実行されたかどうかをどのように知ることができますか?

于 2012-01-12T22:11:32.267 に答える