2015-08-18 19 views
5

Ho un programma su .NET 4 per Windows. Sto provando a portarlo per computer Mac con mono e Xamarin studio. Ho una libreria di terze parti EmguCV (è un wrapper per la libreria OpenCV). Sto usando official manual per installarlo. Si installa sia OpenCV e EmguCV aCome allegare librerie di terze parti nella versione di rilascio

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

Quando inizio programma in modalità debug da Xamarin - tutto funziona benissimo. Trova tutte le librerie e le usa. Ma quando creo un programma come "pak" ed eseguo sul computer senza installato EmguCV - Ho ottenuto l'eccezione "DLL non trovata".

io faccio il mio programma con questo comando:

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 

mio secondo e terzo params dovrebbero attaccato EmguCV librerie al mio pak:

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

E quando guardo dentro pak - trovo queste librerie. Tuttavia il programma ancora non trovato ..

immagino problemi openCV librerie native, ma non riesco a capire che cosa è sbagliato :(

+0

non sono sicuro di C# ... in genere si aggiungono i file binari DLL alla directory di lavoro o in qualsiasi altro punto, in cui il sistema/programma li può trovare – Micka

+0

Sì. Per Windows è vero. Ma per MAC non funziona. Ho messo tutto il dylib di openCV nella mia cartella di debug e ho avuto di nuovo l'errore. –

risposta

3

Beh, ho passato un sacco di tempo su Mac Forum :)

Il punto è che le librerie dinamiche OSX (* .dylib) hanno un "nome di installazione" che ll sistema operativo in cui la biblioteca si aspetta di essere trovato. Quindi, per lavorarci, dovrei cambiare "nome installazione". Per farlo - ho utilizzato uno strumento dylibbundler che ha cambiato questo nome con install_name_tool come questo:

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

dove @loader_path è una variabile speciale Mac, che permette di utilizzare rispetto al percorso di applicazione.

1

Queste sono le cose che avevo controllare prima. 1. E ' il vostro pak completa. Suona come si può avere già verificato che. 2. il vostro sistema di test hanno i binari OpenCV installato e nel percorso.

+0

Ogni utente dovrebbe installare i binari opencv? Sembra strano .. –

+0

Ogni utente non deve avere un'installazione separata dei binari opencv, ma ogni utente deve avere accesso a dove sono i binari opencv. Questo può essere ottenuto assicurandosi che la variabile path contenga la directory in cui si trovano i binari opencv. In alternativa, è possibile collegare in modo simbolico i file binari opencv a un percorso di directory già presente nel percorso di ciascun utente. – Darren

Problemi correlati