2014-05-11 5 views
1

우분투의 MonoDevelop에서 ASP.NET MVC 프로젝트를 만들었습니다.
Nuget을 사용하여 LibGit2Sharp 패키지를 추가했지만 Linux 환경 용으로 컴파일 된 libgit2 라이브러리가 없습니다.
그런 다음 libgit2 소스를 다운로드하여 컴파일했습니다.
는 지금은 libgit2-06d772d.so 가지고,하지만 난 내 asp.net MVC 프로젝트의 bin 폴더에 넣어 때 콘솔 프로젝트를 만들 때, 나는 System.DllNotFoundException이Ubuntu의 Mono ASP.NET MVC 프로젝트에서 LibGit2Sharp 사용하기

참고
을 git2-06d772d 수 libgit2-06d772d.so를이 프로젝트의 bin 폴더에 넣으면 응용 프로그램이 제대로 작동합니다.

답변

1

공유 파일은 특정 파일 옆에있을 때 해당 디렉토리가 라이브러리로드 경로에있을 때로드되지 않습니다. 운영 체제는 모든 프로그램에 대해 유효한 몇 가지 경로를 설정하지만 라이브러리를 다른 곳에두면 직접 디렉토리를 지정해야합니다.

LD_LIBRARY_PATH을 라이브러리의 디렉토리와 함께 내보내는 것은 라이브러리 로더가 라이브러리를로드 할 다른 경로를 알 수있게합니다. 예 : 당신이 libgit2sharp 스크립트 libgit2 내장 경우는 OS가 어떤 프로그램은 libgit2을 찾기 위해 그 쉘에서 시작하는 것이 알려 콘솔에

export LD_LIBRARY_PATH=$HOME/libgit2sharp/libgit2/build 

를 실행할 수 있습니다.

모노 기반 응용 프로그램은 프로그램을 사용하여 실제 .exe을 시작하기 위해 모노를 호출하기 전에 환경을 설정하는 사용자가 실행할 스크립트를 제공하는 것이 일반적입니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 도움이되지 않습니다. 모노 기반 응용 프로그램에 일반적으로 사용되는 경우 콘솔 응용 프로그램을 만들 때 왜 제대로 작동합니까? –

+0

파일을/usr/lib 응용 프로그램에 넣으면 잘 작동합니다. –

+0

이것은 유닉스 시스템의 모든 단일 응용 프로그램에 공통적으로 적용됩니다. '/ usr/lib'는 표준로드 경로의 일부이므로 모든 프로그램에서 찾을 수 있습니다. –