【问题标题】:Can the Windows API be utilized using just C?是否可以仅使用 C 来使用 Windows API?
【发布时间】:2012-01-15 02:43:56
【问题描述】:

我正在自学 C(来自 Java)。我非常欣赏这门语言,我学习它的主要原因之一是我可以在必要时利用 Java 内置的 JNI 特性来编写本机代码。我的问题主要是关于 Windows API。我可以仅使用 C 来使用 API 的功能和特性吗?

Windows API 会与纯 C 代码兼容,还是包含只能由 C++ 代码使用的类等?

另外,如果我在 Windows 机器上将共享库编译为 (lib.sl NOT lib.dll),它是否可以在另一台机器 (Mac/Linux) 上运行?

【问题讨论】:

  • Win32 API 是纯 C。
  • 非常好的选择。当您降到汇编程序级别甚至是某些 Verilog 时,请告诉我 :)
  • @VladLazarenko 我们需要更多的人来这里,弗拉德,还有谁会做繁重的工作! ;) :P
  • 哈。感谢您的提议,但我会坚持更高的水平(我不是指难度……您可能知道)计算机科学领域。顺便说一句,Java 仍然是我最喜欢的语言!
  • @ghostsoldier23 好痛! Java 不会让您对原始指针进行指针运算,也不会让您引诱它认为它是原始指针,现在这可不是什么好玩的,我的朋友,一点也不好玩 :)

标签: c windows winapi java-native-interface shared-libraries


【解决方案1】:
  1. Windows API(又名 Win32 API)是一个纯 C 库。
  2. 不,您不能在另一台非 Windows 机器上使用 Windows 共享库,除非有支持 Windows ABI 的软件 - 例如 WineReactOS

【讨论】:

  • ...而且很多时候你甚至不能在另一台 Windows 机器上使用它。即在不同的架构上。
  • @VladLazarenko 经常吗?你有什么不便携的东西的参考吗?
  • @cli_hlt 无赖!当您只有一个平台时,我讨厌 C 缺乏可移植性。有什么方法可以在 Windows 机器上为 UNIX 创建一个共享库?
  • 许多MSWindows 程序,尤其是GUI 程序,在wine 下的Linux 上运行良好。
  • Mac 呢?我意识到 Linux 无疑是一个更好的操作系统,但不幸的是 Mac 确实占据了更高的市场份额,使其在可移植性方面的重要性更高。
【解决方案2】:

Win32 API 就像其他人指出的那样是纯 C 的。这意味着,一旦你掌握了它,你就会知道操作系统是如何工作的。其他操作系统通常也是如此。如果您追求 MFC/COM+ 或 Java 包装器,即使您可以构建出色的程序,情况也完全相反。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多