如何在发布版本中附加第三方库

本文关键字:第三方 版本 布版本 | 更新日期: 2023-09-27 18:08:20

我有一个Windows版本的。net 4程序。我正在尝试将它移植到带有mono和Xamarin studio的Mac电脑上。我有第三部分库EmguCV(它是OpenCV库的包装器)。我是用官方手册安装的。它将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库到我的包:

  • - r:/图书馆/Python/2.7/网站/emgucv/lib
  • - r:/图书馆/Python/2.7/网站/emgucv/bin

当我在pak -里面查找时,我找到了这个库。但是程序仍然没有找到…

我猜openCV原生库有问题,但我不知道是什么问题:(

如何在发布版本中附加第三方库

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

关键是OSX动态库(*.dylib)有一个"安装名",它告诉操作系统期望在哪里找到库。所以,工作与它-我应该改变"安装名称"。为了做到这一点,我使用了dylibbundler工具,用install_name_tool更改了这个名称,如下所示:

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

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

这些是我首先要检查的东西。1. 你的包完整了吗?听起来你好像已经查过了。2. 您的测试系统是否已经安装了opencv二进制文件,并在

路径中。