我在想如果一個程序在一些可執行文件或共享庫中如果沒有編譯在一起,它們如何「識別」某些功能。我知道這聽起來令人困惑,下面是一個非常詳細的解釋:如何在共享庫中執行某些功能
假設我有一個名爲「A」的程序。現在我想在某個特定位置放置一些額外的編譯共享庫「B」,以便「A」可以在其中運行函數,而不必更改A本身的代碼。當然,我也可以使用一些額外的文件,如txt文件,當然可以看到源代碼。我應該如何設計整個系統才能工作?
如果你把它想象成一個遊戲,E.G.一場紙牌遊戲,這裏就是情況。你有這個遊戲,並且你堅持寫純粹的C++(所以你必須編譯所有東西)。現在你已經有了公開的遊戲。但是一些DIYer想要在遊戲中添加一些新的卡(他們不能改變可執行文件本身,因爲如果有更多的那個DIY呢?)。您可以通過txt或db或其他方式來完成卡數據部分,但對於「效果」部分,您必須對其進行編碼並將其編譯爲某些內容。主程序應該如何在編譯的庫中調用卡「效果」功能?
順便說一句,我知道我可以用像LUA這樣的簡單語言來完成它,但是如果我想以「編譯的方式」來做呢?
下面是更具體的例子:
A.cpp:INT主(){FuncA的行(); FuncB();跳到FuncC(); ...} //和別的
B.cpp:INT TheFunction(){...} //這是它
程序不知道的 「B」 的存在,但它如果我可以編譯B到某種B.so,並將其放在指定的文件夾中,「A」可以執行TheFunction()我知道聲音真的可以使用,但這是我我在想:
編譯B時,使用某種方法讓編譯器生成某種類型的函數指針列表到一個txt文件。程序A讀取該文件,並運行指針指向B的函數。
這可能嗎?或者我真的理解錯了嗎?
閱讀微軟的COM:http://en.wikipedia.org/wiki/Component_Object_Model。 – Kevin 2014-10-29 03:10:25