0

我将我的 Android.mk 定义如下:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_SRC_FILES := optplugin.c \
                   optionobjclass.c \


LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog 
LOCAL_MODULE:= optplugin
include $(BUILD_SHARED_LIBRARY)

optplugin.c 文件对 optionobjclass.c 中实现的方法抛出了许多未定义的引用

我将不胜感激任何帮助。

optplugin.c 中的声明:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//#include "pluginHelp.h"
#include "npapi.h"
#include "npruntime.h"
//#include "npupp.h"
#include "mcvdebug.h"
//#include "jritypes.h"
//#include "gogi_plugin_api.h"          /* GOGI Deprecated */
#include "optionobjclass.c"
#include "optionsClass.h"
#include "IOlsOptionObject.h"
#include "npunix.c"
#define TRACESYMBOL(...) extern int a;
#define TraceDebug(m, ...) printf(__VA_ARGS__)

#define TRUE 1
#define FALSE 0
4

2 回答 2

3

由于您正在编译optionobjclass.c多次,因此发生了多个定义错误。

LOCAL_SRC_FILES := optplugin.c \

                  optionobjclass.c \

#include "optionobjclass.c"

包含源文件时,将编译源文件。解决方案是optionobjclass.cLOCAL_SRC_FILES.

但更好的方法是制作 heder 文件optionobjectclass.hoptionobjclass.c包含标题。

于 2012-12-03T06:33:41.887 回答
0

尝试添加 C PLUS PLUS 标志,如果存在任何 c++ 代码,它可能正在使用 c++ 编译器。

#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
于 2012-12-03T13:20:59.017 回答