在我的程序中,我需要調用一個子進程* sub_prog *。我通過系統調用來做到這一點,例如system("sub_prog arg1 arg2...");
。夠簡單;所有工作正常。不幸的是,我使用的超級計算機不支持子進程的產生(由於架構,你不能在MPI中使用fork(),popen()等),這只是一個事實。因此,解決方案是將* sub_prog *(共享)庫作爲庫函數調用,而不是作爲子進程。從獨立程序創建共享庫 - 如何處理「int main()」?
我創建了共享庫* libsub_prog.so *很好。問題是 - 我想要調用的函數是* sub_prog *本身,即,我想調用sub_prog
的main(argc,argv)
。
有關共享庫的問題通常集中在共享庫的成員函數調用中。但是如果我想調用主要的函數本身呢?
(我想過重命名* SUB_PROG *的int main
到另一個名稱,實際上把它main
逼到另一個成員函數。但也有int main
前右deefined幾個全局變量)。我是否必須將這些放在標題globals.h中,然後在每個源文件中手動插入「#include globals.h」?)
感謝所有提前。
使用'dlsym'有什麼問題? –
這超出了std C++的範圍,因此請爲您的環境添加相應的標記。 –
將main重命名爲其他內容沒有任何問題;你似乎對全局變量有一些誤解,你的擔憂似乎沒有任何意義。 – wolfgang