Ada to C ++:传递无符号的64位值

时间:2012-09-20 00:48:32

标签: c++ interface ada

我需要将Ada程序中的2个数据传递给某些C ++代码进行处理。

  • 数据 - 加倍。
  • 时间 - 无符号64位。

我能够使用Long_Float(C ++中的double)和Integer(C ++中的int,显然不是64位)在Ada中创建一个使用我的C ++方法的过程。 我使用了以下代码(代码不在我身上,因此语法可能稍微偏离):

procedure send_data (this : in hidden_ptr; data : in Long_Float; time : in Integer);
pragma import (CPP, send_data, "MyClass::sendData");

现在,这是有效的,我正在尝试将时间扩展到完整的64位,并且理想情况下希望在C ++端有一个无符号长整数。我没有在Ada中看到任何与之匹配的类型,因此我创建了自己的类型:

type U64 is mod 2 ** 64;

当我的send_data方法使用该类型时,我得到一个错误,说没有可能的方法将该类型映射到C ++类型(沿着这些行的东西,再次没有我的代码或确切的错误短语)。

有没有办法将Ada中的用户定义类型传递给C ++?也许在Ada中有另一种类型我可以用作无符号的64位值吗?有没有办法将我的U64类型的地址作为参数传递给C ++方法,如果这更容易?我正在使用绿山adamulti编译器v3.5(非常新的ada,不确定该信息是否有帮助)。非常感谢示例!

0 个答案:

没有答案