2009-05-29 73 views
2

我應該怎麼做才能實現鉤狀系統?
這是我的設置:掛鉤我的應用程序

我有這些靜態庫:

  • A.LIB
  • B.LIB

A和B相似的模塊可包括一起內同一個應用程序。事情是我在A中有一個函數,我想向B公開。我正在用回調列表來做這件事......但我對這個想法並不滿意。所以我認爲我可以實現像Win32API一樣的鉤狀系統,但我想聽取專家的意見。

當然,我可以訪問兩個源代碼。

注意:我忘記提及我沒有使用類,並且由於設計決定,我無法爲此項目創建類或對象,因此這裏不允許繼承等內容。

回答

2

您是否考慮將共享部分移出到第三個庫中?

在一個嚴格的靜態鏈接場景中,掛鉤機制不會有太大的收穫 - 共享依賴性和額外的動態併發症。如果你有一個地方可以讓你的圖書館能夠獲得鉤子,那就把它放在那裏。

或者,只需從庫A中導出函數,從庫B中引用它,也許確保庫以正確的順序鏈接,並且鏈接器應該爲您排序。

如果庫A可能鏈接或不鏈接,並且您的工具鏈支持它,則可以在B中聲明一個虛擬版本的函數,如果鏈接了A,則該函數將被覆蓋。

+0

感謝您的快速回復。是的,我做了,但事情是我只想公開這個函數,所以我看到毫無意義的生成一個額外的依賴項的應用程序,只是因爲一個函數。 – Veehmot 2009-05-29 01:12:36