仅使用C就可以使用Windows API吗?

仅使用C就可以使用Windows API吗?,c,windows,winapi,java-native-interface,shared-libraries,C,Windows,Winapi,Java Native Interface,Shared Libraries,我正在自学C语言(来自Java)。我非常欣赏这种语言,我学习它的主要原因之一是为了在必要时利用Java内置的JNI特性编写本机代码。我的问题主要是关于Windows API的。我可以只用C使用API的函数和特性吗 Windows API是否与纯C代码兼容,或者它包含类,并且只能由C++代码使用? 另外,如果我在Windows机器上编译了一个共享库(lib.sl而不是lib.dll),它会在另一台机器(Mac/Linux)上工作吗 (又名Win32 API)是一个纯C库 不,除非有支持Windo

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

Windows API是否与纯C代码兼容,或者它包含类,并且只能由C++代码使用? 另外,如果我在Windows机器上编译了一个共享库(lib.sl而不是lib.dll),它会在另一台机器(Mac/Linux)上工作吗

  • (又名Win32 API)是一个纯C库
  • 不,除非有支持Windows ABI的软件(如或),否则不能在其他非Windows计算机上使用Windows共享库
  • (又名Win32 API)是一个纯C库
  • 不,除非有支持Windows ABI的软件(如或),否则不能在其他非Windows计算机上使用Windows共享库


  • 像其他人指出的那样,Win32 API是纯C语言。这意味着,一旦掌握了它,您将了解操作系统的工作原理。其他操作系统通常也是如此。如果你追求的是MFC/COM+或Java包装器,那么即使你能构建出优秀的程序,情况也恰恰相反。

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

    Win32 API是纯C。非常好的选择。当你降低到汇编程序级别,甚至到某个Verilog时,请告诉我:)@VladLazarenko我们这里需要更多的人,Vlad,还有谁来做这个重担!;):帕。谢谢你的提议,但我会坚持更高的水平(我不是说困难……你可能知道)计算机科学领域。Java仍然是我最喜欢的语言@幽灵战士23真疼!Java不会让你在原始指针上做指针运算,也不会让你诱使它认为它是一个原始指针,这一点都不好玩,我的朋友,一点也不好玩:)Win32 API是纯C的。非常好的选择。当你降低到汇编程序级别,甚至到某个Verilog时,请告诉我:)@VladLazarenko我们这里需要更多的人,Vlad,还有谁来做这个重担!;):帕。谢谢你的提议,但我会坚持更高的水平(我不是说困难……你可能知道)计算机科学领域。Java仍然是我最喜欢的语言@幽灵战士23真疼!Java不会让你在原始指针上做指针运算,也不会让你诱使它认为它是一个原始指针,现在这一点都不好玩,我的朋友,一点也不好玩:)。。。而且很多时候你甚至不能在另一台Windows机器上使用它。i、 e.在不同的建筑上。@VladLazarenko经常?你有不可携带物品的参考资料吗?@cli\u hlt Bummer!我讨厌当你只有一个平台时,C语言缺乏可移植性。有没有办法从Windows机器上为UNIX创建一个共享库?许多
    MSWindows
    程序,特别是GUI程序,在
    wine
    下的Linux上运行得很好。但是Mac呢?我意识到Linux肯定是一个更好的操作系统,但不幸的是,Mac确实占据了更高的市场份额,使其在可移植性方面的重要性有所提高。。。。而且很多时候你甚至不能在另一台Windows机器上使用它。i、 e.在不同的建筑上。@VladLazarenko经常?你有不可携带物品的参考资料吗?@cli\u hlt Bummer!我讨厌当你只有一个平台时,C语言缺乏可移植性。有没有办法从Windows机器上为UNIX创建一个共享库?许多
    MSWindows
    程序,特别是GUI程序,在
    wine
    下的Linux上运行得很好。但是Mac呢?我意识到Linux肯定是一个更好的操作系统,但不幸的是,Mac确实占据了更高的市场份额,使其在可移植性方面的重要性有所提高。