2012-12-03 60 views
0

我定义我的Android.mk如下现有的各种方法:的Android NDK给未定义参考

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

您是否在optplugin.c中包含了头文件optionobjectclass.h?请从这两个文件中添加一些代码。 – Shaiful

+0

是的,头文件都存在。 – harshalizee

+0

它是未定义的引用或函数的多重定义吗? – Shaiful

回答

3

,因为你正在编译optionobjclass.c多次了多重定义错误发生。

LOCAL_SRC_FILES:= optplugin.c \

    optionobjclass.c \ 

的#include “optionobjclass.c”

当你includ源文件时,源文件将被编译。解决方案是从LOCAL_SRC_FILES删除optionobjclass.c

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

0

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

#ifdef __cplusplus 
extern "C" { 
#endif 


#ifdef __cplusplus 
} 
#endif