當前位置:編程學習大全網 - 編程語言 - 多語言混合編程

多語言混合編程

起始所有程序都是壹樣的,最終都是機器碼,只是在編寫時使用的語言不同(編程語言都是程序的抽象,為了編程方便,本身並不是可運行的程序,最終必須編譯成機器碼才能運行,不同語言只是不同人編的,用的語法不同),妳寫的源文件無論是任何語言寫的,最終編譯的結果都是機器碼。 函數調用在機器碼就是很簡單的壹步,將參數表要求的參數值放入堆棧(順序有約定),然後使用 jmp 指令跳轉到要調用的函數的函數地址即可,別的程序不管妳怎麽實現,只要妳告訴我參數表,和函數地址就能調用,所有程序最終都是機器碼,自然也符合這個規則。。。 所以實現互調,只要將對方的接口程序文件映射到自己的進程中,然後預先知道他的參數表,得到他的接口函數地址,將參數放入堆棧,然後跳轉到函數地址, 這樣妳就實現調用。。。。 winodws提供了壹個文件類型叫做.dll 動態鏈接庫,如果妳希望讓其他程序調用,只用將文件編譯成dll即可,他就是壹個程序文件,純機器碼,可以讓任何程序調用。。。。

具體實現方法,通過loadliabroray("xxxxx\xxx.dll"),將該文件映射到進程,getprocaddress("函數名"),得到他的函數地址,假設妳已經知道這個函數格式為 int func(int,int,char),妳就定義壹個該類型的函數指針 ,將getprocaddress("函數名")的地址給這個函數指針,按C語言格式調用即可,很簡單的,這些都是操作系統的功勞,如果妳學學windows系統編程,就知道了。。。

還有壹種方式是,把另壹個程序當做壹個服務器程序,通過約定的數據來間接調用。。。。比如有個字符串,叫“吃飯”,妳只要將這個“吃飯”這兩個字發給另壹個程序(操作系統提供了壹個叫管道的內核對象,通過它,妳可以給也使用該管道的程序發數據),他實現編了程序知道這是要幹什麽,然後就自己執行。。。

  • 上一篇:x+y+z=12的非負整數解有多少個,求過程
  • 下一篇:日本留學有哪些受歡迎的專業
  • copyright 2024編程學習大全網