2017-09-21 44 views
0

我使用C#與Visual Studio 2010開發了WindowsForm應用程序,並且我有外部DLL(使用VC++編寫)。當我將它部署到Windows 7時,一切正常。但是,在Windows 8.1上,它安裝得很好,運行良好,直到程序需要訪問DLL中的庫函數。它抱怨說它找不到DLL(即使該文件與可執行文件位於同一位置)。如何鏈接到外部DLL,以便它能被Windows 8.1識別?

這隻發生在Windows 8.1中(可能還包括Windows 8)。

我錯誤地鏈接了DLL嗎?

+1

最有可能的原因:Windows 8.1機器上未安裝Visual Studio 2010 Microsoft C運行時。或者可能是C++類庫。與操作系統版本無關,除了間接的情況。您可以使用Process Monitor來診斷這類問題,查找找不到文件的錯誤。 –

+0

非常感謝!我明天會試一試。 – Hary

+0

非常感謝。我發現(從ProcessMonitor)該DLL實際上是一個調試版本,因爲它試圖訪問調試版本的C運行時DLL。現在它都是固定的。謝謝一堆! – Hary

回答

0

答案是從上面哈里·約翰斯頓的評論:

最有可能的原因:在Visual Studio 2010中的Microsoft C運行時不能在Windows 8.1的機器上安裝。或者可能是C++類庫。與操作系統版本無關,除了間接的情況。您可以使用Process Monitor來診斷這類問題,查找找不到文件的錯誤。

1

假設你的DLL是Windows自帶的DLL,兩件事情之一正在發生的事情:

  1. Windows正在未能找到該DLL
  2. 的DLL具有不可用在其他依賴機器

要檢查,請嘗試更改PATH環境變量以包含您的DLL所在的文件夾。如果程序運行,則這是定位DLL的問題。

如果這樣做不起作用,那麼您需要進行更深入的調查以瞭解實際發生的情況。

有一個指導here,向您展示如何使用Process Monitor來確定您的程序正在發生什麼,以找出實際上未能加載的內容。這可能不是你的C++ DLL,它可能是它的許多依賴之一。

相關問題