자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
			Delphi			.so  로드가 안됩니다
		
		
			2015.09.03 11:28		
		
	
	
	
		
	
	
				수고하십니다. 초보 개발자인데요..
ffmpeg 관련한 실행코드를 .so로 빌드하여 안드로이드 플랫폼용으로 개발을 하려하는데
main 함수를  오픈할 수있는지는 둘째치고....  open부터 되질 않습니다. 계속  handle값이 0이 리턴되요
 
deploy 설정 을  assets\internal\ 이나, library\libs\armeabi-v7a\ 로 맞춘후에
 dlopen도 써보고, loadlibrary도 써보고,   또  로컬이나 연결기기에  .so파일을 직접 저장하여 절대경로로 불러내봐도 
0이 리턴 됩니다.
 
아래는  사용한 코드이고요 
제가 잘못한게 있거나 다른방법이 있으면 알려주시면 감사하겠습니다.~
 
 
implementation
uses
  Posix.dlfcn;
var
  main: function(x:integer; ch:array of pchar):integer;cdecl;
  hd : Intptr;  //or THANDLE 
 
procedure TForm1.FormCreate(Sender: TObject);
var
  path : String;
  lib: String;
  //marshaller:TMarshaller;
 
begin
  //path := IncludeTrailingPathDelimiter(System.IOUtils.TPath.GetDocumentsPath);
  //lib := 'libffmlink.so';
 //hd := LoadLibrary('/storage/emulated/0/libffmlink.so');
  
 hd := Posix.dlfcn.dlopen(MarshaledAString('/storage/emulated/0/libffmlink.so'), RTLD_LAZY);
  
  if hd = 0 then
    memo1.lines.Add('lib open failed')
  else
    memo1.Lines.Add('lib open succeed');
end;
 
procedure TForm1.AndroidClick(Sender: TObject);
begin
  if hd = 0 then
    Exit;
  main := GetProcAddress(hd, 'main');
  if not Assigned(main) then
    Memo1.Lines.Add('get function failed');
end;
end.
 
			
	
	
	
	
	
	
Delphi .so 로드가 안됩니다
2015.09.03 11:28
수고하십니다. 초보 개발자인데요..
ffmpeg 관련한 실행코드를 .so로 빌드하여 안드로이드 플랫폼용으로 개발을 하려하는데
main 함수를 오픈할 수있는지는 둘째치고.... open부터 되질 않습니다. 계속 handle값이 0이 리턴되요
deploy 설정 을 assets\internal\ 이나, library\libs\armeabi-v7a\ 로 맞춘후에
dlopen도 써보고, loadlibrary도 써보고, 또 로컬이나 연결기기에 .so파일을 직접 저장하여 절대경로로 불러내봐도
0이 리턴 됩니다.
아래는 사용한 코드이고요
제가 잘못한게 있거나 다른방법이 있으면 알려주시면 감사하겠습니다.~
implementation
uses
  Posix.dlfcn;
var
  main: function(x:integer; ch:array of pchar):integer;cdecl;
  hd : Intptr;  //or THANDLE 
procedure TForm1.FormCreate(Sender: TObject);
var
  path : String;
  lib: String;
//marshaller:TMarshaller;
begin
  //path := IncludeTrailingPathDelimiter(System.IOUtils.TPath.GetDocumentsPath);
  //lib := 'libffmlink.so';
 //hd := LoadLibrary('/storage/emulated/0/libffmlink.so');
  
 hd := Posix.dlfcn.dlopen(MarshaledAString('/storage/emulated/0/libffmlink.so'), RTLD_LAZY);
  
  if hd = 0 then
    memo1.lines.Add('lib open failed')
  else
    memo1.Lines.Add('lib open succeed');
end;
procedure TForm1.AndroidClick(Sender: TObject);
begin
  if hd = 0 then
    Exit;
  main := GetProcAddress(hd, 'main');
  if not Assigned(main) then
    Memo1.Lines.Add('get function failed');
end;
end.
 
                                            

 
								 
				
아래 파란크리스마스님이 작성한 내용이 도움이 될것같습니다.
http://bluexmas.tistory.com/373