引用我的库的MVC应用程序在运行时失败,但我的控制台应用程序引用相同的库成功

时间:2014-11-21 21:24:31

标签: c# asp.net-mvc visual-studio dll

我有一个Visual Studio解决方案(C#中的所有代码),其结构为:

MySolution
|
+--MyLibrary (DLL library)
|
+--MyMVCSite (MVC 5 site)
|
+--MyConsoleApp (Console app)

MyLibrary引用了 Emgu.CV DLL,它们是非托管库C#的一组OpenCV包装器。我将所有OpenCV dll都“永远复制”到建筑物上的bin目录。

现在问题就出现了。在MyConsoleAppprogram.cs中,我有代码:

MyLibrary mylib = new MyLibrary();
Image img = Image.FromFile(@"c:\\cat.jpg");
using (MemoryStream ms = new MemoryStream()) {
    img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    arr = ms.ToArray();
    mylib.Process(arr);
}

调用MyLibrary代码:

public void Process(byte[] buffer) {
    PreprocessImage(buffer, true);
}

private Image<Gray, byte> PreprocessImage(byte[] buffer, bool resize) {

    Image<Gray, byte> grayImage;
    using (MemoryStream mss = new MemoryStream(buffer)) {
        Bitmap bmpImage = (Bitmap)Image.FromStream(mss);

        Image<Bgr, byte> img = new Image<Bgr, byte>(bmpImage); // <-- Emgu.CV type
        // More processing on img

    }
}

一切成功。变量img(通过Emgu.CVs包装函数构建到OpenCV)设置正确,可以在下游处理等。

HOWEVER ,当我尝试使用代码MyConsoleAppHomeController.cs的{​​{1}}中重复MyMVCSite完全相同的代码时),我在行上发现运行时错误:HomeController.cs说明Image<Bgr, byte> img = new Image<Bgr, byte>(bmpImage);

{"Unable to load DLL 'opencv_core300': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"} MyConsoleApp引用MyMVCSite,但控制台应用有效,而MVC应用却没有,尽管使用相同的确切代码来调用MyLibrary有没有人知道会发生什么?我在一个准系统项目中重复了这一点,但行为仍然是同样的事情。

更新

我发布了我的准系统项目,显示了以下行为:https://github.com/brspurri/Test 在这里仍然完全亏损。

0 个答案:

没有答案