none
api不同,如何实现跨平台? RRS feed

  • 问题

  • 最近在学.net,想到一些问题
    比如我用c++编写程序,调用了windows api,但我想让它在linux下运行,linux有linux api,那我是简单的用对应于linux的编译器编译就行了还是得把源代码里Windows api函数改成linux api函数?
    而这一切在.net里面又是怎么个实现方式?
    2012年11月24日 6:28

答案

  • 您好,

    需要把源代码里的Windows API 改成Linux API。

    目前微软.net FM的编译出来的exe不能运行于linux上,尤其是像你这边还涉及到API。这就等同于同第三方通信。不同平台间的通信规则,比如传参规则,参数类型都可能不一样。这样的结果是,你的程序是可以编译通过的,但是不能正常运行。.net FM实现了跨语言平台,它的编译器会将各种语言编写的源码编译成 IL 代码,然后JIT会解释IL代码,给CLR 运行。

    Best  regards,


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 baileng 2012年11月28日 2:32
    2012年11月26日 6:29
    版主

全部回复

  • 您好,

    需要把源代码里的Windows API 改成Linux API。

    目前微软.net FM的编译出来的exe不能运行于linux上,尤其是像你这边还涉及到API。这就等同于同第三方通信。不同平台间的通信规则,比如传参规则,参数类型都可能不一样。这样的结果是,你的程序是可以编译通过的,但是不能正常运行。.net FM实现了跨语言平台,它的编译器会将各种语言编写的源码编译成 IL 代码,然后JIT会解释IL代码,给CLR 运行。

    Best  regards,


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 baileng 2012年11月28日 2:32
    2012年11月26日 6:29
    版主
  • 扩展阅读: http://zh.wikipedia.org/wiki/Mono

    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年11月26日 6:30
    版主