2017-08-13 5 views
0

私はASP.NETプロジェクトで顔検出にEmguCVを使用しています。 Visual Studioからプロジェクトを実行すると、すべて正常に動作します。Emgu CV展開されたプロジェクトにDLL 'cvextern'をロードできません。

次に、私はフォルダプロファイルを介してリリースビルドを公開し、次にこの公開ビルドをsmarterasp.netにアップロードしました。

アプリケーションは一般的に動作しています。アプリケーションは、画像内の顔を検出しようとしているときには、例外がthrowedさ:

D:\Programming\C#Projs\FacelessBrowserTT_DIV_CONTAINER\FacelessBrowserTT\Controllers\HomeController.cs 
D:\Programming\C#Projs\FacelessBrowserTT_DIV_CONTAINER\FaceDetection\FaceDetector.cs 
... 

System.AggregateException: One or more errors occurred. ---> System.TypeInitializationException: The type initializer for 'Emgu.CV.CvInvoke' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'cvextern': The specified module could not be found. (Exception from HRESULT: 0x8007007E) 
    at Emgu.CV.CvInvoke.RedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata) 
    at Emgu.CV.CvInvoke..cctor() 
    --- End of inner exception stack trace --- 
    at Emgu.CV.Image`2.AllocateData(Int32 rows, Int32 cols, Int32 numberOfChannels) 
    at Emgu.CV.Image`2.set_Bitmap(Bitmap value) 
    at FaceDetection.FaceDetector.GetFaces(Bitmap img) in D:\Programming\C#Projs\FacelessBrowserTT_DIV_CONTAINER\FaceDetection\FaceDetector.cs:line 22 
    at ImageModification.FaceBlurModificator.Modify(Image img) in D:\Programming\C#Projs\FacelessBrowserTT_DIV_CONTAINER\ImageModification\FaceBlurModificator.cs:line 21 
    at FacelessBrowserTT.Controllers.HomeController.<>c__DisplayClass4_0.<PreparePage>b__1() in D:\Programming\C#Projs\FacelessBrowserTT_DIV_CONTAINER\FacelessBrowserTT\Controllers\HomeController.cs:line 81 
    at System.Threading.Tasks.Task.InnerInvoke() 
    at System.Threading.Tasks.Task.Execute() 
    --- End of inner exception stack trace --- 
    at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) 
    at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) 
    at FacelessBrowserTT.Controllers.HomeController.<PreparePage>d__4.MoveNext() in D:\Programming\C#Projs\FacelessBrowserTT_DIV_CONTAINER\FacelessBrowserTT\Controllers\HomeController.cs:line 86 
---> (Inner Exception #0) System.TypeInitializationException: The type initializer for 'Emgu.CV.CvInvoke' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'cvextern': The specified module could not be found. (Exception from HRESULT: 0x8007007E) 
    at Emgu.CV.CvInvoke.RedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata) 
    at Emgu.CV.CvInvoke..cctor() 
    --- End of inner exception stack trace --- 
    at Emgu.CV.Image`2.AllocateData(Int32 rows, Int32 cols, Int32 numberOfChannels) 
    at Emgu.CV.Image`2.set_Bitmap(Bitmap value) 
    at FaceDetection.FaceDetector.GetFaces(Bitmap img) in D:\Programming\C#Projs\FacelessBrowserTT_DIV_CONTAINER\FaceDetection\FaceDetector.cs:line 22 
    at ImageModification.FaceBlurModificator.Modify(Image img) in D:\Programming\C#Projs\FacelessBrowserTT_DIV_CONTAINER\ImageModification\FaceBlurModificator.cs:line 21 
    at FacelessBrowserTT.Controllers.HomeController.<>c__DisplayClass4_0.<PreparePage>b__1() in D:\Programming\C#Projs\FacelessBrowserTT_DIV_CONTAINER\FacelessBrowserTT\Controllers\HomeController.cs:line 81 
    at System.Threading.Tasks.Task.InnerInvoke() 
    at System.Threading.Tasks.Task.Execute()<--- 

何興味深いのは例外で、私のホームコントローラのローカルパスやその他のファイルをそこにいるということです

それは理由でしょうか?配備されたアプリケーションのどこかに私のローカルパスがあるのはなぜですか?

私は以前にプロジェクトを展開していないので、私は100%愚かな間違いがあります。私は間違って何をしていますか?

答えて

1

簡単な答えはEmguCV DLLとのOpenCVのDLLのALLもでなければならない、あなたのexeファイルがあるところはどこでも、です。開発中に何が起こるかは、展開に全く影響しません。

EmguCV DLLをMy EXEのフォルダに入れ、x64というフォルダにすべてのOpenCV DLLを置くと便利です。 x64フォルダーはあなたのexeと同じフォルダー内のALSoです。

ダグ

関連する問題