0

解決できないように見える問題があります。#include "CalculateNormalsJob.h" 同じ名前のクラスの宣言を含むファイルを含むファイル JobDispatcher.cpp があります。

class CalculateNormalsJob : public Job
{

public:
    CalculateNormalsJob(some params);
...
};

ファイル CalculateNormalsJob.cpp には、次の定義が含まれています。

CalculateNormalsJob::CalculateNormalsJob(some params)
    : Job(params)
{
}

CalculateNormalsJob.h と CalculateNormalsJob.cpp はどちらも、Job オブジェクトを次のように作成する JobDispatcher.cpp と同じプロジェクトおよびフォルダーにあります。

add(new CalculateNormalsJob(some params));

リンク中に、次のエラーが表示されます

Error   9   error LNK2001: unresolved external symbol "public: __thiscall CalculateNormalsJob::CalculateNormalsJob(class ResourceMap *,class JobScheduler *,class Job *,int)" (??0CalculateNormalsJob@@QAE@PAVResourceMap@@PAVJobScheduler@@PAVJob@@H@Z)    C:\Fredrik\vs12\proflexa\scanner\JobDispatcherJob.obj

何を忘れてしまったのかもわからない。Win7 と付属の v110 コンパイラで Visual Studio 2012 を使用しています。

どんな助けでも大歓迎です!

編集:

CalculateNormalsJob.cpp何らかの理由でコンパイルされていないようです。しかし、私はその理由についての手がかりがありません。これはプロジェクトに含まれており、Visual Studio の IntelliSense にはクラスとその機能に関する知識があります。

編集2:

CalculateNormalsJob.h
CalculateNormalsJob(ResourceMap *state, JobScheduler *scheduler,  Job* listener, int scanNumber);


CalculateNormalsJob.cpp
CalculateNormalsJob::CalculateNormalsJob(ResourceMap *state, JobScheduler *scheduler, Job* listener, int scanNumber)
    : Job(state, scheduler, listener), scanNumber(scanNumber)
{
}


Call:
add(new CalculateNormalsJob(state,scheduler,this,scanNbr));
4

1 に答える 1

0

CalculateNormalsJob.cpp ファイルのプロパティを確認したところ (右クリック -> プロパティ)、ヘッダー ファイルとして作成され、後で .cpp に名前が変更されたことが判明したため、"Item Type" 設定がヘッダー ファイルに設定されました。設定を C/C++ コンパイラに変更すると、必要に応じてコンパイルされ、リンカは外部シンボルを見つけることができます。

于 2013-07-25T11:27:33.343 に答える