我有一個由用C++編寫的不同模塊組成的應用程序。
其中一個模塊用於處理SunGrid Engine上的分佈式任務。它使用DRMAA API來提交和監控網格作業。如果客戶端不支持網格,應使用本地機器
API libdrmaa.so的共享對象在編譯時鏈接並在運行時加載。
如果使用我的應用程序的客戶端具有此「.so」,則一切正常,但如果客戶端沒有該應用程序, 應用程序將退出未能加載共享庫。
爲了避免這種情況,我使用dlsym()和dlopen()函數指針取代了API調用。 現在我可以使用本地機器而不是網格,如果對dlopen的調用不成功並且我的目標已實現。
現在的問題是,應用程序現在可以成功運行小型測試用例,但使用較大的測試用例時,它會引發段錯誤,而使用動態加載的相同代碼正常工作。使用C動態加載例程的問題
我在使用dlsym()和dlopen()時丟失了什麼?
有沒有其他方法可以達到同樣的目標?
任何幫助,將不勝感激。
感謝名單,
是啊..我同意你..但我應該如何去糾正這個??整個代碼很笨重:(.. – sud03r 2009-07-03 15:49:27