トップ 一覧 検索 ヘルプ RSS ログイン

C/C++ Sync Suite Companion601/7の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{div_begin}}
[[← 6 章に戻る|C/C++ Sync Suite Companion601/6]] [[↑トップへ|C/C++ Sync Suite Companion601]] [[8 章に進む →|C/C++ Sync Suite Companion601/8]]
{{div_end}}

{{div_begin style="margin-bottom:-10px"}}
!!!7 コンジットのデバッグ
{{div_end}}

{{div_begin "style='position:absolute;right:0px;font-size:70%;margin-right:15px;margin-top:15px;width:250px;'"}}
*{{goto Adding Additional Logging Support to Your Conduit,コンジットへの追加ログ サポートの追加}}
*{{goto Common Troubleshooting Help,一般的なトラブルシューティング ヘルプ}}
**{{goto When Your Conduit Doesn't Appear in the Custom Dialog Box,あなたのコンジットがカスタム ダイアログ ボックスの中に表示されないとき}}
**{{goto When Your Conduit Does Not Run,あなたのコンジットが実行されないとき}}
{{div_end}}

{{div_begin "style='position:relative;padding:0px;padding-right:5px;padding-left:10px;margin-right:250px;margin-top:20px;width:auto;border-right-style:dotted;border-right-width:2px;border-right-color:silver;'"}}
この章はあなたがあなたのコンジットをデバッグするのを助ける情報を提供します。この章は以下の内容を含みます。

*{{goto Adding Additional Logging Support to Your Conduit,コンジットへの追加ログ サポートの追加}}
*{{goto Common Troubleshooting Help,一般的なトラブルシューティング ヘルプ}}

!!{{anchor Adding Additional Logging Support to Your Conduit}}コンジットへの追加ログ サポートの追加 {{goto top,^TOP^}}

あなたは HotSync マネージャを HotSync ログ ファイルの詳細レベルを高くするいくつかの異なるフラグと共に起動することができます。これらのフラグは ''Conduit Development Utilities Guide'' の中の [[第 4 章 「HotSync マネージャのためのコマンド-ライン オプションの使用」|Conduit Development Utilities Guide601/4]] の中でリストにされています。

あなたは、{{goto Listing 7.1,コード 7.1}} のように Windows API 関数 {{span style='color:blue;font-family:monospace;',GetCommandLine()}} を呼び出し、引数リストを解析することによって、容易に HotSync デバッグ フラグのためのコンジットにサポートを追加することができます。PalmSource 社は、あなたが少なくとも冗長({{span style='color:blue;font-family:monospace;',-v}})オプションをサポートすることを推奨します。なぜなら、これはあなたが問題とトラブルシュート テクニカル サポート呼び出しを追跡するのを助けることができるからです。

{{anchor Listing 7.1}}
'''コード 7.1 HotSync.exe コマンド ライン引数の抽出'''

 #define LOG_NORMAL  0x0000
 #define LOG_L1      0x0001
 #define LOG_L2      0x0002
 #define LOG_VERBOSE 0x0004
 
 DWORD dwLogLevel;
 
 struct logOpt_t
 {
    char *szCmd;
    DWORD dwCmdValue;
 } logOptions[] = {
    _T("V"), LOG_VERBOSE,
    _T("L1"), LOG_L1,
    _T("L2"), LOG_L2
 };
 
 void ProcessCmdLineParameters()
 {
    CString csCmdLine(GetCommandLine());
    csCmdLine.MakeUpper();
    
    CString csDelim = _T("-");
 
    dwLogLevel = LOG_NORMAL;
   int nSize = sizeof(logOptions)/sizeof(logOpt_t);
 
    for (int n=0; n<nSize; n++)
    {
       if (csCmdLine.Find(csDelim + logOptions[n].szCmd) != -1)
          dwLogLevel |= logOptions[n].dwCmdValue;
    }
 }


!!{{anchor Common Troubleshooting Help}}一般的なトラブルシューティング ヘルプ {{goto top,^TOP^}}

この節では、開発者がコンジットを実行したときに遭遇するいくつかの共通の問題の解決について説明します。他の有用な情報は、''Conduit Development Utilities Guide'' の中の [[付録 A 「デバッグ Tips」|Conduit Development Utilities Guide601/A]] を参照してください。

::TIPS
:::あなたは、HotSync マネージャがあなたのコンジットを読み込もうとするときにあなたのコンジットについてのより多くの情報を取得するために、CDK と共に出荷されるコンジット検査ユーティリティを使用することができます。''Conduit Development Utilities Guide'' の中の [[第 6 章 「コンジット検査ユーティリティ」|Conduit Development Utilities Guide601/6]] を参照してください。


!{{anchor When Your Conduit Doesn't Appear in the Custom Dialog Box}}あなたのコンジットがカスタム ダイアログ ボックスの中に表示されないとき {{goto top,^TOP^}}

あなたのコンジットが HotSync マネージャの '''Custom''' ダイアログ ボックスの中に表示されない場合、HotSync マネージャはあなたのコンジットを読み込んでいないことを意味します。{{goto Table 7.1,表 7.1}} はいくつかの可能性のある理由と解決方法を示しています。

{{anchor Table 7.1}}
'''表 7.1 読み込まれないコンジットの解決方法'''

,理由,解決方法
,コンジットは拡張 DLL としてビルドされた,'''NOTE:''' あなたはコンジットを標準 DLL としてビルドしなければなりません。拡張 DLL としてビルドしてはいけません。
,パスまたはコンジット名が正しくない,"あなたはフル パスとファイル名を指定するか、ファイル名だけの場合はファイルを HotSync マネージャの実行可能ディレクトリか Windows {{span style='color:blue;font-family:monospace;',PATH}} の中に置かなくてはなりません。{{br}}あなたはあなたのコンジット DLL をHotSync ディレクトリにコピーして、DLL 名を提供することによってあなたのコンジットをインストールすることができます。''Conduit Development Utilities Guide'' の中の [[第 3 章 「コンジット コンフィグレーション ユーティリティ」|Conduit Development Utilities Guide601/3]] を参照してください。{{br}}また、あなたはあなたのコンジット DLL をあなた自身のディレクトリの中に置いたまま、あなたがコンジットをインストールするときに DLL のフル パス名を提供することができます({{goto Conduit 1,Conduit|Introduction to Conduit Development601/A}} コンフィグレーション エントリの中で)。{[br}}いずれのケースでも、コンジットのパスとファイル名がコンジット コンフィグレーション ユーティリティの中で正しく記述されているかチェックしてください。"
,依存関係を解決できない,"あなたのコンジットがリンクをはる DLL はいずれも HotSync マネージャが使用するサーチ パスの中で使用可能でなければなりません。これは {{span style='color:blue;font-family:monospace;',HotSync}} ディレクトリ、Windows {{span style='color:blue;font-family:monospace;',System}} ティレクトリ、Windows {{span style='color:blue;font-family:monospace;',PATH}} 環境変数の中でリストされているディレクトリを含みます。{{br}}コンジットを読み込むために使用される Win32 呼び出しは {{span style='color:blue;font-family:monospace;',LoadLibrary()}} です。これは、必ずしも現在のコンジットの場所を含まないライブラリ/依存ライブラリを読み込むときの具体的なサーチ順序を保持します(フル パスが指定されている場合)。Microsoft ドキュメントの {{span style='color:blue;font-family:monospace;',LoadLibrary()}} を参照してください。"
,依存する関数を見つけられない,"古いバージョンの必須 DLL が存在する場合、古バージョンは新しいバージョンがサポートするエクスポートされる関数のすべてをサポートしない可能性があります。例えば、{{span style='color:blue;font-family:monospace;',syc20.dll}} です。あなたが新しい関数のいずれかを使用する場合、それらのインポートされる関数のアドレスを解決できないためあなたのコンジットは読み込まれません。"

::NOTE
:::あなたは依存問題を解決するために Dependency Walker ({{span style='color:blue;font-family:monospace;',Depends.exe}})を使用することができます: www.dependencywalker.com

!{{anchor When Your Conduit Does Not Run}}あなたのコンジットが実行されないとき {{goto top,^TOP^}}

{{goto Table 7.2,表 7.2}} はコンジットは HotSync マネージャのカスタム ダイアログ ボックスに表示されるけれども実行されない場合のいくつかの可能性のある理由と解決方法を示しています。

{{anchor Table 7.2}}
'''表 7.2 実行されないコンジットの解決方法'''

,理由,解決方法
,作成者 ID が一致しない,"HotSync マネージャは、ハンドヘルド上に一致する作成者 ID を持つアプリケーションがある場合にのみ、あなたのコンジットがこの要件から手を引かない限り、コンジットを実行します。{{goto GetConduitInfo(),GetConduitInfo()|C/C++ Sync Suite Companion601/3}} を参照してください。"
,バージョン番号が無効,"あなたのコンジットのバージョン番号は以下の 2 つの呈すによって指定される範囲になければなりません:{{br}} {{span style='color:blue;font-family:monospace;',MIN_CONDUIT_VERSION 0x00000101}}{{br}} {{span style='color:blue;font-family:monospace;',MAX_CONDUIT_VERSION 0x00000200}}{{br}}あなたが {{goto GetConduitVersion,GetConduitVersion()|C/C++ Sync Suite Reference601/6}} エントリ ポイントから返す値は {{span style='color:blue;font-family:monospace;',MIN_CONDUIT_VERSION 0x00000101}} から {{span style='color:blue;font-family:monospace;',MAX_CONDUIT_VERSION 0x00000200}} までの範囲でなければなりません。{{goto Listing 3.2,コード 3.2|C/C++ Sync Suite Companion601/3}} は {{span style='color:blue;font-family:monospace;',GetConduitVersion()}} 関数の例を示しています。"
,エントリ ポイント,"あなたがあなたのコンジットの中で MFC を使用している場合、あなたはあなたのすべてのエントリ ポイントの開始時に {{span style='color:blue;font-family:monospace;',AFX_MANAGE_STATE(AfxGetStaticModuleState())}} マクロをインクルードしなければなりません。あなたは、DLL からエクスポートされる各関数の開始点でこのマクロを使用することによって、明示的に現在のモジュール状態を DLL のためのものとしてセットしなければなりません。"
,不完全なクラス リスト,"あなたのコンジットが他の DLL の中で実装されているクラスを使用する場合、あなたはその DLL をあなたの {{span style='color:blue;font-family:monospace;',CDynLinkLibrary}} チェインに追加しなければなりません。例えば、あなたが {{span style='color:blue;font-family:monospace;',pdcmnxx}} DLL の中にある {{span style='color:blue;font-family:monospace;',CHotSyncActionDialog}} を使用している場合、あなたはあなたのコンジットの {{span style='color:blue;font-family:monospace;',InitInstance}} 関数の中で {{span style='color:blue;font-family:monospace;',InitPdcmdn5DLL}} を呼び出さなくてはなりません。{{br}}同様に、あなたがあなたのコンジットの中で MFC OLE、MFC データベース(または DAO)、MFC ソケット サポートを使用している場合、あなたはあなたが使用する各 DLL のためにあらかじめ定義されている初期化関数を呼び出さなくてはなりません。{{span style='color:blue;font-family:monospace;',AfxDbInitModule(), AfxOleInitModule(), AfxNetInitModule(), AfxDaoInit(), AfxDaoTerm()}} 関数については、MFC ドキュメントを参照してください。"
{{div_end}}

{{div_begin "style='border-top-style:solid;border-top-width:1px;border-top-color:silver;'"}}
[[← 6 章に戻る|C/C++ Sync Suite Companion601/6]] [[↑トップへ|C/C++ Sync Suite Companion601]] [[8 章に進む →|C/C++ Sync Suite Companion601/8]]
{{div_end}}