SyntaxHighlighter

2012年5月15日火曜日

FileMaker プラグインの開発をMicrosoft .NET Frameworkで行う[1]

FileMaker プラグインの開発をMicrosoft .NET Frameworkで行う[1]

まずは、以下からテンプレートをダウンロード
24U Plug-In Template 3.0 : http://www.24usoftware.com/PlugInTemplate

24U Plug-In Template 3.0\Projectsの中に
「VisualStudio 2010」と「VisualStudio 2003」のサンプルが入っています。
「VisualStudio 2010」は、C++のIntellisenseが機能しないので「VisualStudio 2005」を使います。

「VisualStudio 2003」内の"PlugInTemplate.vcproj"を「VisualStudio 2005」用に変換します。

「VisualStudio 2005」で
ファイル->開く->プロジェクト/ソリューション
"PlugInTemplate.vcproj"を開く

「Visual Studio 変換ウィザード」で変換してくれます。


テストで
「ビルド->ソリューションのビルド」を行います。

「出力」ウインドウに以下の様に表示されビルドが完了します。

========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

以下に出力されています。
24U Plug-In Template 3.0\Output\FMPluginDebug.fmx


「警告 1」が出ていると思います。
「'sprintf' の宣言を確認してください。」


解決策:
以下ファイルの「sprintf」を「sprintf_s」に変更

24U Plug-In Template 3.0\Sources\FMPluginVersion.cpp //ファイル

117行
修正前:
sprintf(auChars, "%02d%02d%02d00", PLUGIN_VERSION_MAJOR,.....
修正後:
sprintf_s(auChars, "%02d%02d%02d00", PLUGIN_VERSION_MAJOR, .....


Microsoft .NET Frameworkで開発出来るように設定を変更します。
プロジェクト->プロパティ
構成プロパティ
└全般
[共通言語ランタイムサポート]の項を

「共通言語ランタイムサポートを使用しない」
から
「共通言語ランタイムサポート(/clr)」
に変更。

このままビルドを行うと
「error D8016 : コマンド ライン オプション '/MTd' と '/clr' は同時に指定できません」とエラーになります。

解決策:
プロジェクト->プロパティ
構成プロパティ
└C/C++
└コード育成
[ランタイムライブラリ]の項を
「マルチスレッドDLL(/MD)」に変更




まだ、エラーが!
「warning C4747: .....: マネージ コードは、DLL エントリポイントおよび DLL エントリポイントから到達した呼び出しを含むローダー ロック下では実行できません」

解決策:
Support\VisualStudio\FMPluginDllEntryPoint.cpp //ファイル
■以下全てコメントアウト
// FMPluginDllEntryPoint.cpp : Defines the entry point for the DLL application.
//
/*
BOOL APIENTRY DllMain( HANDLE hModule,
                      DWORD  ul_reason_for_call,
                      LPVOID lpReserved )
{
   return TRUE;
}
*/


テストで「ビルド」

========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

警告が無くなり、やっと正常終了!



FileMaker プラグインの開発をMicrosoft .NET Frameworkで行う[2]
につづく...かも?



0 件のコメント:

コメントを投稿