마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

android ndk관련해서 질문드립니다.

0 추천
안녕하세요~ 전에 ndk와 관련해서 질문글을 올렸는데.

visual studio 환경에서 만들어진 c++프로젝트(메인cpp에서 다른cpp, h파일을 참조하는 형식)를 android에 넣으려면 unix(linux) 환경으로 먼저 바꿔주셔야 한다고 답해주셔서 각각의 cpp파일을 gcc(mingw)로 컴파일해서 메인 cpp과 링크를 시켰습니다.

그래서 exe파일이 만들어진 후 실행해 봤는데 원래의 exe파일과는 달리 에러가 나네요.. 혹시 gcc(mingw)로 컴파일 하는 과정에서 문제가 있었던 걸까요?

그리고 .so파일도 gcc(mingw)로 생성을 해야 하나요?
aaaandhelper (900 포인트) 님이 2018년 2월 4일 질문
아뇨 so 는 최종적으로 1개만 만드시고
module 을 .a (static build) 으로 만들어서 포함하세요
아 그러면 LOCAL_SRC_FILES에 module.cpp , a.cpp, b.cpp, c.cpp을 넣어서 먼저 .a(static library)로 생성한 다음에 main.cpp를 .so로 ndk-build할 때 LOCAL_STATIC_LIBRARIES에 앞서 생성한 .a(static library)를 추가하는 구조겠네요?
네 그렇게 하셔도 되고 꼭 모듈로 분리하지 않아도 된다면
main.cpp 쪽 LOCAL_SRC_FILES 에 몰아넣어도 됩니다.
답변해 주신덕에 감사하게도 .so 파일을 생성하였습니다. 그런데 궁금한 점이 main.cpp의 메인함수인 int main(int argc, char *argv[]) argv에 2개의 JPG파일의 경로를 파라미터로 넘겨줘야 하는데 java쪽에서는 메인 함수가 public static void main(String[] args) 이런 식으로 시작하는 걸로 알고 있는데 String[] args이 형식으로 보내면 될까요?
android 에는 main 이 따로 없으니
android 에서 처음 call 하는 부분에 인자 정보를 전달 하면 cpp 의 main 에 해당하는 method or function 를 call 하면 될듯 합니다.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...