2010-04-12 108 views
0

如何檢查我的系統上的動態鏈接是如何實現的?對動態鏈接代碼有什麼限制。對代碼要求什麼要求才能動態鏈接?動態鏈接

+2

什麼操作系統? – 2010-04-12 12:38:27

回答

2

它幾乎看起來像你問是否有任何便攜式方式來檢查您的操作系統的能力,無論操作系統是什麼。

唯一可以說的是「閱讀文檔」。

對於我所瞭解的操作系統,Windows使用DLL進行動態鏈接,而Unix使用.so文件。兩者都提供了手動或自動加載圖書館入口點的功能。

+0

或更全面的將會是''*閱讀'libtool'source *''。 – 2010-04-12 12:51:34

+1

請記住,DLL不可跨操作系統移植。 Windows DLL無法在Unix或Linux操作系統上運行。 – 2010-04-12 16:40:27

1

動態鏈接由操作系統在運行時執行,

  • 因此它已以下限制:

    1. OS特定的。

      例如。 Windows .dll不能直接鏈接到linux,您需要在其中創建它並生成.so,反之亦然。

    2. DLL是特定於平臺的:

      如。 X64 dll無法鏈接到Win32項目。

    3. 他們還具體配置:

      如。如果你有一個發佈DLL,你不能將它鏈接到另一個項目 ,這個配置被設置爲Debug。

    4. 這也取決於調用約定:

      爲如。如果.dll項目的調用約定設置爲__cdecl和 ,並且被調用者將其調用約定設置爲__stdcall,則可能會導致運行時異常等問題。

+0

實際上,在調試項目中使用發佈DLL幾乎沒有什麼可阻止你,而這實際上很常見。例如,Windows API可通過將Kernel32.DLL,User32.DLL,GDI.DLL等加載到您的進程中。即使在調試時,你幾乎總是加載Windows版DLL。 (大多數開發人員甚至不知道Windows的調試版本是什麼 - 它是_checked_構建的) – MSalters 2017-01-24 14:59:00