none
ITaskSchedulerを使おうとしてLNKエラーが起きる RRS feed

  • 質問

  • いつも参考にさせていただいています。

    今回タスクスケジューラーにタスクを登録するアプリを作成しようとしていて、

    ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.ja/taskschd/taskschd/c_c_code_example_terminating_a_task.htm

    こちらにあるソースを元にVS2008のC++/CLIのWindowsフォームでアプリを作ろうとしていましたが、

    error LNK2028: 未解決のトークン (0A00001A) "extern "C" long __stdcall CoCreateInstance(struct _GUID const &,struct IUnknown *,unsigned long,struct _GUID const &,void * *)" (?CoCreateInstance@@$$J220YGJABU_GUID@@PAUIUnknown@@K0PAPAX@Z) が関数 "private: void __clrcall netformapp::Form1:Tongue TiedchedulerSet(void)" (?SchedulerSet@Form1@netformapp@@$$FA$AAMXXZ) で参照されました。
    netformapp.obj : error LNK2019: 未解決の外部シンボル "extern "C" long __stdcall CoCreateInstance(struct _GUID const &,struct IUnknown *,unsigned long,struct _GUID const &,void * *)" (?CoCreateInstance@@$$J220YGJABU_GUID@@PAUIUnknown@@K0PAPAX@Z) が関数 "private: void __clrcall netformapp::Form1:Tongue TiedchedulerSet(void)" (?SchedulerSet@Form1@netformapp@@$$FA$AAMXXZ) で参照されました。

     

     

    というエラーがどうしても消せません。現状ではプロジェクトの作成からフォームにボタンをひとつ作成し、ボタンのイベントに以下のコードを入力しているだけです。

     

    #include <mstask.h>

    ITaskScheduler *iTask;
    CoCreateInstance(CLSID_CTaskScheduler,NULL,CLSCTX_INPROC_SERVER,IID_ITaskScheduler,

    (void **) &iTask);
        
    開発環境はXPsp3のVS2008sp1です。

    共通言語は/clrになっていて、lib,incは何も追加していません。いちど#pragma comment (lib,"Mstask.lib")をしてみましたがやはりエラーがでました。

     

    どなたか解決方法を知っている方がおりましたら教えていただけないでしょうか?

     

    2008年11月18日 9:16

回答

  • プロジェクトの設定の「リンカ」→「入力」→「追加の依存ファイル」にole32.libを追加してください。

     

    以下のCoCreateInstanseの説明を見ると最後に「Library: Use ole32.lib.」と書いてあります。

    リンクエラーが発生したらリンクに失敗している関数の説明を確認して必要なライブラリを調べると解決につながります。

    http://msdn.microsoft.com/en-us/library/ms686615.aspx

     

    2008年11月18日 11:06

すべての返信

  • プロジェクトの設定の「リンカ」→「入力」→「追加の依存ファイル」にole32.libを追加してください。

     

    以下のCoCreateInstanseの説明を見ると最後に「Library: Use ole32.lib.」と書いてあります。

    リンクエラーが発生したらリンクに失敗している関数の説明を確認して必要なライブラリを調べると解決につながります。

    http://msdn.microsoft.com/en-us/library/ms686615.aspx

     

    2008年11月18日 11:06
  • 返信が送れて大変すいません。

     

    「追加の依存ファイル」にole32.libを追加しましたらエラーがなくなりました。

    自分の検索不足でした。お恥ずかしい限りです。

    次回はこういったことがないようにしたいと思います。

     

    大変丁寧でわかりやすい返答ありがとうございました。

     

    2008年11月18日 23:58
  • こんにちは。中川俊輔 です。

     

    C.Johnさん、回答ありがとうございます。

     

    kokorokokoniarazuさん、初めまして。フォーラムのご利用ありがとうございます。

    有用な情報と思われたため、C.Johnさんの回答へ回答済みチェックをつけさせていただきました。

     

    今後ともフォーラムをよろしくお願いします。

    それでは!

    2008年12月2日 9:08