Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在发布版本中附加第三方库_C#_Macos_Opencv_Xamarin_Emgucv - Fatal编程技术网

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

C# 如何在发布版本中附加第三方库,c#,macos,opencv,xamarin,emgucv,C#,Macos,Opencv,Xamarin,Emgucv,我在.NET4上有一个Windows程序。我正在尝试将它移植到带有mono和Xamarin studio的Mac电脑上。 我有第三部分库EmguCV(它是OpenCV库的包装器)。我正在使用安装它。它将OpenCV和EmguCV安装到 Library/Python/2.7/site-packages/emgucv/lib 当我从Xamarin以调试模式启动程序时,一切正常。它创建并使用所有库。但当我将程序设置为“pak”并在未安装EmguCV的计算机上运行时,我得到了“未找到DLL”异常 我使用

我在.NET4上有一个Windows程序。我正在尝试将它移植到带有mono和Xamarin studio的Mac电脑上。 我有第三部分库
EmguCV
(它是
OpenCV
库的包装器)。我正在使用安装它。它将
OpenCV
EmguCV
安装到

Library/Python/2.7/site-packages/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
我的第二个和第三个参数应附加到我的pak中
EmguCV
库:

  • -r:/Library/Python/2.7/site-packages/emgucv/lib
  • -r:/Library/Python/2.7/site-packages/emgucv/bin
当我在pak里面看的时候,我发现了这个库。但是程序仍然没有找到它


我猜openCV本机库有问题,但我不知道哪里出了问题:(

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

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

关键是OSX动态库(*.dylib)有一个“安装名称”,告诉操作系统希望在哪里找到库。 因此,为了使用它,我应该更改“安装名称”。为此,我使用了一个工具
dylibbundler
,该工具使用
install\u name\u tool
更改了此名称,如下所示:

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

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

不确定C#。。。通常,您只需将DLL二进制文件添加到工作目录或系统/程序可以找到它们的任何其他地方。对于windows来说,这是真的。但对于MAC来说,这是行不通的。我将所有openCV动态库都放在调试文件夹中,但再次出错。每个用户不必单独安装openCV二进制文件,但每个用户都必须能够访问openCV二进制文件所在的位置。这可以通过确保path变量包含opencv二进制文件所在的目录来实现。或者,您可以将opencv二进制文件符号链接到每个用户路径中已有的目录位置。