2012-04-05 86 views
1

我在VB.NET中編寫了一個程序,該程序使用了多個我在C++中編寫的.dll文件。 dll包含程序舊版本的一些功能。在我的開發計算機上,一切正常,但我構建了發行版,將其複製到目標機器上,並將.exe啓動正常。當程序嘗試使用.dll中的函數時,它會引發異常並說「無法加載DLL」c:/ path/my.dll「找不到指定的模塊。」部署VB.NET程序無法在同一個文件夾中找到dll

我不知道這有什麼差別,但是我用的定義主VB項目的DLL函數:

Declare Function MyFunction Lib "c:/the path/my.dll" (ByVal in1 as Double, ByRef out1 as Double) as Integer 

我已經檢查目標上的.NET Framework和第4版似乎與開發計算機安裝相同。兩者都是Windows XP機器。我不知道這是我編寫.dll的方式,還是僅僅與我的vb.net項目有關。任何幫助表示讚賞。

回答

3

使用相對於您的可執行文件的路徑,而不是絕對路徑。

或者,更好的是,根本不要使用該路徑,只列出dll文件的名稱。然後將dll作爲資源添加到您的項目中。然後,您應該能夠輕鬆地將您的安裝項目捆綁在一起,並且它們將自動最終放置在正確的地方進行調試和部署。

+0

如果你的意思是'MyFunction Lib「my.dll」',我試過了,它不起作用。 – user962342 2012-04-05 23:38:10

+0

我添加了dll作爲資源並使用了相對路徑,但得到了相同的結果 – user962342 2012-04-06 15:54:46

0

找到一個鏈接到CodeProject page引用了這個相同的問題。

基本上你需要檢查DLL文件的所有依賴關係在運行位置是否可用。使用Microsoft Dependency Walker讓我知道我的VB應用程序中使用的某個dll文件引用了另一個dll文件的解決方案。放置其他DLL與其他運行文件後沒有更多的錯誤!

相關問題