我們的行業是高性能的分佈式並行計算。我們有一個使用Visual Studio 2008開發的非託管C++應用程序。非託管C++:如何動態加載代碼?
我們的應用程序(更像是一個框架)應該能夠動態加載由第三方開發的代碼(算法),這些代碼(可以有許多dll)到我們的接口規範,並調用加載的代碼來獲得一些結果。
認爲它就像你想調用sin(x)函數一樣,但是可以使用許多不同的sin(x)實現。
我有幾個問題,因爲我很新的這方面的動態加載代碼:
- 是DLL(動態鏈接庫)回答這個類型的要求?
- 如果第三方使用不同類型的IDE來創建與我的dll相比較的dll(比如Eclipse CDT,C++ Builder,Visual C++ 6.0等),那麼dll是否仍然可以與我的應用程序一起工作?
- 我們的應用程序也應該跨平臺工作(應該可以在Linux上運行),使用QLibrary是最合理的方式來抽象出所有平臺特定的dll加載?
- (可選)我可能遇到一些無法預料的問題嗎?
我一直在閱讀Wiki,在我看來,編程平臺從DLL - > COM - > COM + - > .NET演變而來?如果是這樣,我應該只用COM嗎? – sivabudh 2009-12-10 19:16:28
真的取決於複雜性。 COM開發可能會很痛苦,OTOH COM解決了接口變得越來越複雜時遇到的一些問題。如果API非常簡單,而且您之前沒有使用COM的經驗,我會建議您不要。 – peterchen 2009-12-10 21:56:29