回覆列表
  • 1 # 一粒塵土一個世界

    你的這個問題首先有個錯誤要糾正:C/C++程式能夠執行起來,必須要先編譯,只有編譯成功了才有可能執行起來,如果沒有入口函式main,程式也是執行不起來的。dll在windows下是屬於動態庫,他是不能單獨執行的,必須要有帶有main函式的程式來呼叫才能夠發揮本身動態庫封裝的功能。

  • 2 # 成都茂大叔

    首先,你是不是想說呼叫dll? 呼叫過程是執行時發生的,編譯時不驗證這個,因此編譯成功沒什麼問題。但是,儘管你可以編譯成功,但執行的時候還是有可能報出缺少dll的異常…

  • 3 # 小樂爸爸

    動態庫與main無關係。

    你問題涉及到動態庫的兩個方面。

    一是執行時,既程式執行過程,這個過程main函式由系統來執行,動態庫則分為動態載入和靜態載入兩種,靜態載入由系統負責查詢和載入,動態載入由你的可執行程式或者另外動態庫透過系統介面載入給定動態庫,所以執行時動態庫與main函式無關。

    二是編譯時,既動態庫生成過程,該過程只需要能夠找到動態庫中用到的介面即可,而且不能夠是main介面(main只能由系統執行),所以動態庫編譯時也無main函式無關。

  • 4 # 遛電子的老李

    首先明確main函式是什麼:main函式是程式入口,程式從這裡開始執行。

    然後再來明確2個東西:可執行檔案exe和動態連結庫dll。(dll在windows環境下是動態連結庫,exe在windows環境下是可執行檔案)

    什麼是可執行檔案?可執行檔案就是編譯好後,生成的檔案可以執行某種功能。你雙擊exe檔案會執行一定的功能(比如彈出視窗之類的),而這個功能就是從main函式開始執行的,因為main函式是程式入口,即程式從這裡開始執行。

    什麼是動態連結庫?動態連結庫是封裝好的,能實現一類功能的獨立函式包,可以把dll看做是寫好的c++函式,只是字尾名從cpp變成了dll(實際上編譯器還會最佳化程式碼),且dll是被呼叫的,不能主動執行。即你雙擊dll檔案不會執行,所以它不需要main函式。

    你在配置工程的時候會選擇輸出是可執行檔案或者動態連結庫,編譯器知道dll是沒有main函式的,所以編譯器就能編譯成功。

  • 5 # 無盡的程式碼

    exe是以main函式為入口編譯最佳化。dll是以匯出函式為入口編譯最佳化。看起來exe像是隻有一個名稱為main的匯出函式的dll,其實exe也可以匯出其他函式,兩者沒有本質區別。

  • 中秋節和大豐收的關聯?
  • 腦袋裡植入一顆超大記憶體晶片,是不是什麼都會?可以不用再學習了?