2011-08-29 26 views
5

Tôi hiện đang viết một ứng dụng phân loại thể loại làm dự án năm cuối của tôi trong Kỹ thuật máy tính. Ban đầu tôi đã viết mã trích xuất tính năng (triển khai FFTW) trong C và bây giờ tôi cần triển khai nó trên Android thông qua NDK.Liên kết FFTW với ứng dụng NDK của Android

Đây là dự án NDK đầu tiên của tôi vì vậy tôi vẫn đang gặp phải sự cố nhưng tôi đã biên soạn thư viện FFTW3 cho Android theo this guide. Tôi đã không làm bước cuối cùng bởi vì tôi không nghĩ nó phù hợp với những gì tôi cần.

Câu hỏi của tôi là làm thế nào để tôi, sau bước biên dịch, sử dụng thư viện trong ứng dụng NDK chính gọi điện trên đó? Tôi có làm mọi thứ bình thường trong Application.mk chỉ với LOCAL_STATIC_LIBRARIES được đặt thành libfftw3.a mà tôi vừa biên dịch không? Và sau đó tôi không cần phải có bất kỳ lá cờ liên kết -lfftw3 như tôi thường sẽ phải không?

Trả lời

4

Bạn có thể sử dụng thư viện FFTW prebuit (cho dù bạn đã xây dựng nó như thế nào).

Hoặc bạn có thể tạo FFTW trong Android.mk makefile với toàn bộ dự án.

Android.mk nội dung sẽ là:

# Prebuilt FFTW library 
include $(CLEAR_VARS) 
LOCAL_MODULE := fftw 
include $(PREBUILT_STATIC_LIBRARY) 

# or 

# Build FFTW library 
include $(CLEAR_VARS) 
LOCAL_MODULE := fftw 
# TODO put your static libs build flags 
include path_to_fftw_sources/$(LOCAL_MODULE).mk 
include $(BUILD_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := YourProject 
# TODO put your shared lib build flags 
include path_to_your_project/$(LOCAL_MODULE).mk 
LOCAL_STATIC_LIBRARIES += fftw 
include $(BUILD_SHARED_LIBRARY) 

Tôi đã viết path_to_fftw_sources/$(LOCAL_MODULE).mk để xây dựng thư viện fftw tĩnh và path_to_your_project/$(LOCAL_MODULE).mk để xây dựng thư viện chia sẻ của bạn. Tốt hơn là đặt LOCAL_SRC_FILESLOCAL_C_INCLUDES vào tệp .mk riêng biệt.

Bạn có thể đọc thêm về Android.mk tệp trong tài liệu docs/ANDROID-MK.html trong phân phối NDK của bạn.

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