我已将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
答案 0 :(得分:3)
由于您多次编译optionobjclass.c
,因此会出现多个定义错误。
LOCAL_SRC_FILES:= optplugin.c \
optionobjclass.c \
和
#include“optionobjclass.c”
当您包含源文件时,将编译源文件。解决方案是从optionobjclass.c
移除LOCAL_SRC_FILES
。
但更好的方法是从optionobjectclass.h
制作文件optionobjclass.c
并包含标题。
答案 1 :(得分:0)
尝试添加C PLUS PLUS标志,如果存在任何c ++代码,它可能正在使用c ++编译器。
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif