1. 程式人生 > >C# 呼叫 C++ dll 動態連結庫中多個函式時全域性變數的問題

C# 呼叫 C++ dll 動態連結庫中多個函式時全域性變數的問題

    最近編寫C#程式呼叫C++語言的演算法庫,自己嘗試在C++中封裝好DLL庫,並在一個工程檔案中同時匯出多個函式供C#呼叫。多個函式之間需要相互通訊,但又不能互相呼叫,,一個很好的方法就是用全域性變數來實現,其問題是,C#啟動後加載DLL檔案,在呼叫某個函式後修改的DLL中的全域性變數值是否會被儲存,以供下一個函式呼叫時共享使用。

    經過實驗發現,當C#啟動後開始載入DLL檔案,檔案中的初始程式碼就會執行,所有全域性變數會一直儲存實值,直到C#程式執行結束或主動釋放載入的DLL檔案,這樣DLL檔案就可以被看作一個伴隨C#主程序一直執行的子執行緒,執行過程中不會釋放變數。