Firebird 2.5でC++ Builder 2010で単純なユーザー定義関数(UDF)を作成しようとしましたが、Firebirdで機能しません。C++ビルダー2010でFirebird 2.5のユーザー定義関数を作成
extern "C" __declspec(dllexport) int __stdcall MYFUNC (int i)
{
int result = 2 * i;
return result;
}
: "ibase.h" と "ib_util.h" など、私の例のUDFでユニットを追加するC++ Builderの2010
のデフォルト設定とDLLプロジェクトの作成
- 01のサンプルDBにIBExpertを経由して、私のUDFの登録パスにDLL
FBUDFMBD.dll
を構築C:\Program Files (x86)\Firebird\Firebird_2_5\UDF
私は、DLL-エクスポート
MYFUNC
として私UDFを見ることができますPE情報 - エラーメッセージツールGExpertsでInvalid token. invalid request BLR at offset 36. function F_MYFUNC is not defined. module name or entrypoint could not be found.
で
select F_MYFUNC(3) from RDB$DATABASE;
結果とUDFを呼び出す
DECLARE EXTERNAL FUNCTION F_MYFUNC
INTEGER
RETURNS INTEGER
ENTRY_POINT 'MYFUNC' MODULE_NAME 'FBUDFMBD';
ordinal $1
およびエントリポイント$1538
。
私は間違っていますが、Firebirdは自分のDLLとそのUDFを正しく登録できません。
私のDLLプロジェクトには、デフォルトのコンパイラオプションに関する変更がありますか? Delphiで
私の経験では、Firebird UDFの質問 - 通常、ここでは多くの回答を得られません。 Firebirdサポートメーリングリストで質問することも考えてみてください。 –
私は100%確信していませんが、 'extern" C "__declspec(dllexport)'を削除する必要があると思います。https://github.com/FirebirdSQL/firebird/blob/8905e15435116bfac3abb30ae476d4812d1fe04b/src /extlib/ib_udf.cpp –