0

Visual C++ を通じてタスク スケジュールを使用しようとしています。私はCtask.h(ここから)を使用してタスクを実行しています。ただし、(Visual Studio 11 を使用して) ソリューションをビルドすると、次のように表示されます。

fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds

/MD に切り替えると、このエラーが発生します

ConsoleApplication12.obj : error LNK2019: unresolved external symbol "public: __thiscall CTask::CTask(void)" (??0CTask@@QAE@XZ) referenced in function _wmain
1>ConsoleApplication12.obj : error LNK2019: unresolved external symbol "public: void __thiscall CTask::SetStartDateTime(class ATL::CTime const &)" (?SetStartDateTime@CTask@@QAEXABVCTime@ATL@@@Z) referenced in function _wmain
1>ConsoleApplication12.obj : error LNK2019: unresolved external symbol "public: void __thiscall CTask::SetFrequency(enum CTask::ETaskFrequency)" (?SetFrequency@CTask@@QAEXW4ETaskFrequency@1@@Z) referenced in function _wmain
1>ConsoleApplication12.obj : error LNK2019: unresolved external symbol "public: void __thiscall CTask::SetProgram(wchar_t const *)" (?SetProgram@CTask@@QAEXPB_W@Z) referenced in function _wmain
1>ConsoleApplication12.obj : error LNK2019: unresolved external symbol "public: void __thiscall CTask::SetAccountName(wchar_t const *)" (?SetAccountName@CTask@@QAEXPB_W@Z) referenced in function _wmain
1>ConsoleApplication12.obj : error LNK2019: unresolved external symbol "public: long __thiscall CTask::SaveTask(wchar_t const *,int)const " (?SaveTask@CTask@@QBEJPB_WH@Z) referenced in function _wmain
1>ConsoleApplication12.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall CTask::~CTask(void)" (??1CTask@@UAE@XZ) referenced in function _wmain

他のリンク オプションの場合も同様です。これは私が入力したコードです:

#include "stdafx.h"
#include "CTask.h"
#include <iostream>
using namespace std;




int _tmain(int argc, _TCHAR* argv[])
{
    CTask task;
    CTime time(2013, 03, 15, 7, 11, 0);
    LPCTSTR sTaskName( L"Task Name" );

    BOOL replace = TRUE;

    task.SetProgram( L"E:\\aaa.txt" );
    task.SetAccountName( L"harshilsharma63" );
    task.SetStartDateTime( time );
    task.SetFrequency( CTask::freqOnce );

    if( S_OK == task.SaveTask( sTaskName, replace))
    {
        cout << "task successfully created!";
        return 0;
    }
    else
    {
        cout << "task creation failed!";
        return 1;
    }


    return 0;
}

「MFC を使用」を「共有 DLL で MFC を使用」に設定済みです。

4

2 に答える 2

2

実際に CTask.cpp をプロジェクトに入れたことを示す兆候は見られません。ヘッダーのみを含めると、表示されるリンカ エラーが発生します。.cpp も必要です。

于 2013-03-15T15:55:38.950 に答える
1

You need add to your project the CTask.cpp as well as CTask.h. The original project http://www.codeproject.com/Articles/13089/Harnessing-the-task-scheduler can be compiled without any trouble - I just checked it!

于 2013-03-15T15:59:18.697 に答える