処理のために、AdaプログラムからいくつかのC++コードに2つのデータを渡す必要があります。
- データ-double。
- 時間-符号なし64ビット。
Long_Float(C ++ではdouble)とInteger(C ++ではint、明らかに64ビットではありません)を使用して、C++メソッドで機能するプロシージャをAdaで作成できました。私は次のコードを使用しました(コードは私にはないので、構文が少しずれている可能性があります):
procedure send_data (this : in hidden_ptr; data : in Long_Float; time : in Integer);
pragma import (CPP, send_data, "MyClass::sendData");
これでうまくいったので、時間を完全な64ビットに拡張しようとしています。理想的には、C++側でunsignedlonglongを使用したいと考えています。Adaにそれに一致するタイプがないので、独自のタイプを作成しました。
type U64 is mod 2 ** 64;
その型をsend_dataメソッドで使用すると、その型をC ++型にマップする方法がないというエラーが表示されます(これらの行に沿ったもので、コードや正確なエラーフレーズがありません)。
Adaのユーザー定義型をC++に渡す方法はありますか?おそらく、Adaには、機能する符号なし64ビット値として使用できる別のタイプがありますか?簡単な場合は、代わりにU64タイプのアドレスをパラメーターとしてC ++メソッドに渡す方法はありますか?私はgreenhillsadamultiコンパイラv3.5を使用しています(adaは非常に新しいので、その情報が役立つかどうかはわかりません)。例をいただければ幸いです。