2013-01-07 217 views
1

我有一個Visual Studio解決方案,其中包含兩個項目,一個是VB.net,另一個是VC++。 VC++項目是一個名爲Nvapi的Nvidia Driver API的包裝。它是一個nvapi.lib文件和相關的頭文件。我的代碼在我的開發機器上編譯並運行良好,但是我試圖將整個解決方案目錄複製到另一臺計算機上,並運行可執行文件,它得到一個錯誤,說VC++項目的dll或其某個依賴項無法找到/加載。它運行良好,直到我的代碼使用nvapi包裝,但然後崩潰。我嘗試發佈該項目,以便它生成一個安裝程序並以這種方式安裝該程序,但我得到相同的錯誤。Visual Studio 2010中的參考問題

我決定在其他計算機上安裝VS2010,看看我是否可以調試該問題。安裝VS2010後,我製作瞭解決方案文件夾的備份副本。然後我打開解決方案並編譯並運行代碼。現在,這是我真的不明白的部分我去解決方案的備份副本(在我的開發機器上編譯的那個)導航到可執行文件並運行它,現在它工作正常。我能想到的唯一的事情就是編譯代碼將Nvapi.lib文件複製到系統目錄,以便exe能夠正常工作。有誰知道什麼會導致這個問題,以及如何讓我的代碼在其他機器上工作,而無需安裝Visual Studio?

+1

請嘗試使用文本中的某些段落。 –

+0

VC++是託管項目?也許在其他計算機上安裝.NET Framework? – Alexan

+0

我不認爲它是.net框架,因爲它已經安裝。 –

回答

3

一個常見的錯誤是將C++項目的Debug版本複製到另一臺機器上。它將無法找到運行時DLL的調試版本,例如msvcr100d.dll。只有部署發佈版本。

如果您部署了發佈版本,但仍然有問題,那麼您可能忘記運行vcredist安裝程序。當你只有一個DLL和一個不使用C++標準庫類的EXE時,你可以在技術上避免這種依賴性,而不是使用/ MT編譯。如果您不知道缺少的依賴項可能是什麼,請使用SysInternals的ProcMon。

+1

謝謝漢斯!一如既往,你是對的。我切換到釋放和重建修復了我的問題。 –