如何在发行版

时间:2015-08-18 05:41:10

标签: c# macos opencv xamarin emgucv

我有一个适用于Windows的.NET 4程序。我试图用单声道和Xamarin工作室为Mac电脑移植它。 我有第三部分库EmguCV(它是OpenCV库的包装器)。我使用official manual进行安装。它会将OpenCVEmguCV同时安装到

  

库/ Python的/ 2.7 /站点包/ emgucv / lib中

当我从Xamarin在调试模式下启动程序时 - 一切正常。它创建了所有库并使用它。但是当我把节目作为" pak"并且在未安装EmguCV的计算机上运行 - 我找不到"找不到DLL"异常。

我使用此命令创建程序:

macpack -m:1 -o:. -r:/Library/Frameworks/Mono.framework/Versions/Current/lib/ -r:/Library/Python/2.7/site-packages/emgucv/lib -r:/Library/Python/2.7/site-packages/emgucv/bin -r:Assimp32.dll -r:Assimp64.dll -r:cvextern.dll -r:Emgu.CV.dll -r:Emgu.Util.dll -r:libegl.dll -r:libglesv2.dll -r:OpenTK.dll -r:OpenTK.GLControl.dll -r:RH.AssimpNet.dll -r:RH.HeadEditor.dll -r:RH.ImageListView.dll -r:RH.HeadShop.exe -r:blending.fs -r:blending.vs -r:blendingPl.vs -r:idle.fs -r:idle.vs -r:skelet.vs -r:sprite.png -r:./Libraries -r:./Models -r:./Plugin -r:./Resources -r:./Stages -r:./"Haar Cascades" -n:HeadShop -a:RH.HeadShop.exe

我的第二和第三个参数应该将EmguCV个库附加到我的pak:

  • -r:/Library/Python/2.7/site-packages/emgucv/lib
  • -r:/Library/Python/2.7/site-packages/emgucv/bin

当我在里面看时,我发现这个库。但是程序仍然没有找到它..

我想在openCV原生图书馆遇到麻烦,但我无法意识到错误:(

2 个答案:

答案 0 :(得分:3)

好吧,我花了很多时间在mac论坛上:)

重点是OSX动态库(* .dylib)有一个“安装名称”,告诉操作系统期望找到库的位置。 因此,要使用它 - 我应该更改“安装名称”。要做到这一点 - 我使用了一个工具dylibbundler,用install_name_tool更改了此名称,如下所示:

install_name_tool -id "@loader_path/dylibs/libcvextern.dylib" libcvextern.dylib

其中@loader_path是一个特殊的Mac变量,允许相对于应用程序路径使用。

答案 1 :(得分:1)

这些是我先检查的东西。 你的pak是完整的吗?听起来你可能已经检查过了。 2.您的测试系统是否安装了opencv二进制文件并且在路径中。