0

在 Microsoft Visual Studio 2010 中,可以创建具有多个项目的解决方案并设置项目之间的依赖关系。我试图弄清楚是否可以通过 NDK 使用 Eclipse 来完成同样的事情。更具体地说,我想知道是否可以在普通的Android项目中创建可以引用Android库项目中的C头文件的C源文件。

例如:

Android library project: Sockets
Ordinary Android project: Socket_Server 

Sockets contains all the C header/source files that are needed to do socket I/O.
Socket_Server contains test code that makes calls to the functions that are defined in Sockets library project.  This test code requires a header file that contains the function declaration of all API calls.

我已经通过以下方式设置了项目之间的库依赖项:

Properties > Android > Library > Add

在 Socket_Server 中有一个名为 SocketTestServer.cpp 的文件。它包含测试代码,但对库项目 Sockets 进行 API 调用,并通过 #include "Nv_Socket.h" 进行调用,这不是 Socket_Server 的一部分:

jni/SocketTestServer.cpp:1:23: fatal error: Nv_Socket.h: No such file or directory
compilation terminated.
4

2 回答 2

0

请参阅http://www.kandroid.org/ndk/docs/IMPORT-MODULE.htmlhttp://www.kandroid.org/ndk/docs/PREBUILTS.html。诀窍是不必将二进制文件从一个项目复制到另一个项目!此外,使用LOCAL_EXPORT_C_INCLUDES您可以保证使用最新版本

#include "Nv_Socket.h"
于 2012-11-16T02:41:23.343 回答
0

我想我解决了。如果你制作一个 .so 文件,将它放在 /jni 文件夹中,然后在你的 .mk 文件中引用它,编译应该没有问题。

.mk 文件:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Turn on C++ Exception handling
LOCAL_CPP_FEATURES += exceptions
LOCAL_CPPFLAGS += -fexceptions

# Load LogCat utility
LOCAL_LDLIBS := -llog

# C flags
LOCAL_CFLAGS    += -Wno-psabi -fpermissive

# Module name                  
LOCAL_MODULE    := ServerSockets

# C Header includes
LOCAL_C_INCLUDES := $(LOCAL_PATH)

# Source files
LOCAL_SRC_FILES := libSockets.so 

include $(PREBUILT_SHARED_LIBRARY)
于 2012-11-16T00:00:38.250 回答