源代码在编译后,(比如c、c++ 的源代码),不都是二进制的机器指令了吗??  那无论是linux 还是windows ,按说如果采用的cpu都是intel的x86架构的cpu的话。 那相关的机器指令也该是一样的啊?  也许
  1  exe文件的数据结构在不同平台的编译器编译后,是不同的。所以,在不同操作系统加载exe文件时,也许存在不可识别代码位置。
  2  调用某些操作系统的API,编译后,API的机器指令代码并不是在编译后的exe中存在。而是以类似与引用说明的方式。只有在执行时,才能即时从操作系统的对应DLL文件中去调用相应的API函数的代码。
    所以,其它的操作系统平台可能根本找不到这样的API函数去调用。   还有其它的原因吗请补充。   知道这需要了解操作系统原理,编译原理,链接原理。相关的知识。 看过其中的一部分,但之看懂了看过的一小部分。   最近对c#  JAVA 和新听说的一种D语言 包括c c++,对于这些语言的跨平台性很好奇。想大概知道为什么不能跨,而有的为什么又宣称能跨。(不过貌似跨的并不是如人们想象的那种程度。JAVA如果在windows下有调用windowsAPI的代码,那跨的了平台吗? 何况还有个不同平台都必须存在的jvm,那和不同平台都有不同编译器的c++ 或c语言有多大区别?)