- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我习惯于使用 Win32Ada 库为我为 Windows 创建的终端程序调用系统调用。系统调用足以实现对控制台的控制,但 Ada 标准库中的任何东西都做不到。检查 GPS 社区版的源列表,我发现缺少 Win32Ada。我准备继续使用 Win32Ada,但它的排除(就像几年前 Linux 构建的 POSIX 排除的情况一样)暗示有更好的方法来实现低级接口(interface)。任何人都可以给我最简单的代码或引用我如何以从现在开始支持的方式与 Windows 交互吗?
之前的例子:
pragma Ada_2012;
with Win32;
with Ada.Text_IO;
...
最佳答案
我不确定从 GNAT 社区版中排除 win32ada
库是否意味着它已经过时。该库仍可在 GitHub 上使用并且 README 文件中没有提到过时的内容。您可能只需要自己克隆、构建和安装它。
另请注意,win32ada
似乎针对 32 位和 64 位 Windows。据我所知,32 位和 64 位 Windows 之间的区别归结为所使用的指针的大小。这些指针由 win32.ads
中定义的 ULONG_PTR
和 LONG_PTR
类型表示。它们的大小使用 Standard'Address_Size
定义; GNAT 公开的一个属性。此外,win32ada
链接到名称中带有数字 32 的 user32.dll
和 gdi32.dll
这样的文件与如中所述,针对 32 位或 64 位 Windows这个post .
也就是说,作为替代方案,您可能还想检查 GNAT.OS_Lib
。这个包包含对各种 OS 相关设施的抽象(另请参阅 GPS IDE 中的“Help > GNAT Runtime > GNAT > OS_Lib”)。依赖于此包而不是 win32ada
可能会使您的程序在操作系统之间更具可移植性。
关于windows - 如何以 64 位 GNAT GPS 的新方式与 Windows 系统调用交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55766868/
我正在使用 GNAT Programming Studio 更新一些 ada 文件。我有一个样式检查,对于这些旧文件,它会产生数以千计的警告。有用的是 GPS 在位置 View 中有一个小的自动修复“
我必须从C++客户端接收UDP数据报。客户端可以正常工作,并将数据报发送到我在其中编译此代码的ip。数据报的大小为800Bytes。当我发送数据报时,读取过程被阻止。我已经根据以下示例创建了此代码:h
有没有办法用 GNAT.Sockets 获取 MAC 地址? 我已经多次阅读 .ads 文件,但没有看到任何看起来会产生 MAC 地址的内容。 Ads here 最佳答案 在谷歌搜索您的问题时,我找到
我有一个包含多个构建配置的 Gnat/Gprbuild 项目。我有一个主要源文件和一个辅助广告文件,其中主要源文件包括: with Secondary_File; use Secondary_File
编译失败并显示以下 F6 声明: type F3 is delta 2.0**(-4) range 0.0 .. ((2.0**8)-1.0)*2.0**(-4); -- byte 16#f.
我正在尝试使用 GNAT 95 在我的计算机上使用 GNAT-GPL 2015 bundle 编译运行 CENTOS 7 64 位的程序.我收到如下所示的编译器消息: gprbuild: encaps
我需要一个将在后台静默运行但仍与当前用户的桌面交互且不是服务的应用程序。 我希望应用程序在不生成标准输出控制台的情况下启动。 在C中,好像是用Kernel32.dll中的FreeConsole完成的,
我想知道 GNAT 支持哪些 CPU 架构,尤其是在嵌入式领域。 Gnu C 编译器支持的每个目标是否也自动支持 Ada? 最佳答案 AdaCore 的 Embedded Development Pa
在我正在处理的这个多语言 GPRBuild 项目中,我有一些 C++ 库文件 (*.a) 我需要链接到我的可执行文件中。是否有一个 gpr 属性来告诉它链接什么或无论如何将 -l -L 开关传递给链接
所以我正在开发一个 Ada 2012 库,它不应该从默认池中执行分配;所有这些都应该使用用户指定的存储池。 我正在使用一些预定义的包,其中一些显然不遵守规则:例如无限期容器。我想确定我没有使用我不应该
此(声明)代码引发存储错误: type Vector is array (Integer range <>) of Integer; type Array_Starting_At_One (Max :
我有 Ada 程序,可以使用 GNAT - GPS 完美运行和编译。当我运行其 exe 文件并提供用户输入时,该 exe 会立即关闭,而不是说“按任意键继续”。 我在网上搜索了很多,但我只找到了与使用
为了了解 Ada 程序编译背后的过程(不诉诸使用 gpr ),我决定手动编译我的一个项目。为了编译程序,我在每个 .adb 上运行以下命令文件(但是不是手动): $ gcc -c src/.adb -
所以我一直在玩 Ada 一段时间,它是一种很棒的语言,但我不知道如何使可执行文件更小(我在 Windows 上使用 GNAT 5.3)。目前,hello world 的文件大小约为 800 kb。当我
为了了解 Ada 程序编译背后的过程(不诉诸使用 gpr ),我决定手动编译我的一个项目。为了编译程序,我在每个 .adb 上运行以下命令文件(但是不是手动): $ gcc -c src/.adb -
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 2 年前。
我相信我已经发现并修复了 AUnit 中的一个错误,它是 Ada 的 GNAT 编译器工具的一部分。 向 AdaCore 提交 GNAT 工具社区版本错误的最佳方式是什么? 以下程序使用当前版本的编译
这是一个聊天客户端/服务器程序。要进行广播,我必须保存每个连接的客户端,然后写入每个客户端,对吗?管理客户的最佳实践是什么? GNAT.Sockets.Accept_Socket(
documentation for Gnat test 展示了如何生成一个线束和骨架单元测试。它为目标项目中的每个公共(public)函数创建一个单元测试,但是如果我添加另一个单元测试,当我重新生成线
我正在 Ada 中试验 IP 多播,但似乎没有收到任何发送到多播组的流量。不知何故,我似乎无法让应用程序获取传入的数据包。 我可以验证(使用 Wireshark)多播加入是从我的计算机发送的,而且我还
我是一名优秀的程序员,十分优秀!