2015-08-18 16 views
5

Tôi có một chương trình trên .NET 4 cho Windows. Tôi đang cố gắng chuyển nó cho máy tính Mac với mono và Xamarin studio. Tôi có thư viện phần ba EmguCV (đó là một trình bao bọc cho thư viện OpenCV). Tôi đang sử dụng official manual để cài đặt. Nó cài đặt cả hai OpenCVEmguCV đểCách đính kèm thư viện phần ba trong phiên bản phát hành

Library/Python/2,7/site-packages/emgucv/lib

Khi tôi bắt đầu chương trình trong chế độ Debug từ Xamarin - tất cả hoạt động tốt. Nó tìm thấy tất cả các thư viện và sử dụng nó. Nhưng khi tôi làm cho chương trình là "pak" và chạy trên máy tính mà không cần cài đặt EmguCV - Tôi đã nhận "DLL không tìm thấy" ngoại lệ.

tôi làm cho chương trình của tôi với lệnh này:

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 

params thứ hai và thứ ba của tôi nên gắn EmguCV thư viện để pak của tôi:

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

Và khi tôi nhìn vào bên trong pak - tôi tìm thấy thư viện này. Tuy nhiên chương trình vẫn không tìm thấy nó ..

Tôi đoán rắc rối trong openCV thư viện bản xứ, nhưng tôi không thể nhận ra những gì là sai :(

+0

không chắc chắn về C# ... thông thường bạn chỉ cần thêm các tệp nhị phân DLL vào thư mục làm việc hoặc tới bất kỳ nơi nào khác, nơi hệ thống/chương trình có thể tìm thấy chúng – Micka

+0

Yep. Đối với các cửa sổ nó là sự thật. Nhưng đối với MAC nó không hoạt động. Tôi đặt tất cả dylib openCV vào thư mục gỡ lỗi của tôi - và nhận lại lỗi. –

Trả lời

3

Vâng, tôi đã dành rất nhiều thời gian trên các diễn đàn mac :)

Vấn đề là thư viện động OSX (* .dylib) có một "tên cài đặt" mà te lls hệ điều hành nơi thư viện hy vọng sẽ được tìm thấy. Vì vậy, để làm việc với nó - tôi nên thay đổi "tên cài đặt". Để làm điều đó - tôi đã sử dụng một công cụ dylibbundler làm thay đổi tên này với install_name_tool như thế này:

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

nơi @loader_path là một biến Mac đặc biệt, cho phép sử dụng liên quan đến con đường ứng dụng.

1

Đây là những điều tôi muốn kiểm tra đầu tiên. 1. Is pak của bạn hoàn toàn. Nghe có vẻ như bạn có thể đã kiểm tra đó. 2. Liệu hệ thống thử nghiệm của bạn có các mã nhị phân opencv cài đặt và trong con đường.

+0

Mỗi người dùng có nên cài đặt các tệp nhị phân opencv không? Âm thanh lạ .. –

+0

Mỗi người dùng không phải cài đặt riêng các tệp nhị phân opencv nhưng mỗi người dùng phải có quyền truy cập vào nơi có các tệp nhị phân opencv. Điều này có thể đạt được bằng cách đảm bảo biến đường dẫn chứa thư mục chứa các tệp nhị phân opencv của bạn. Ngoài ra, bạn có thể sym-link các tập tin nhị phân opencv của bạn đến một vị trí thư mục đã có trong mỗi đường dẫn người dùng. – Darren

Các vấn đề liên quan