android NDK开发,遇到 undefined reference to

ruanwenzhongf 2013-09-24 10:07:38
我现在有一个android 的工程,有一个des.h头文件和des.cpp、NZEncryption.c两个文件,一些函数在des.h头文件中声明,在des.cpp中实现。然后在NZEncryption.c中使用,

工程目录结构


在NZEncryption.c中声明的头文件
#include <string.h>
#include <jni.h>
#include "des.h"


然后在Android.mk中写的如下:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog

LOCAL_MODULE := NewZone01
LOCAL_SRC_FILES := NZEncryption.c\
des.cpp

include $(BUILD_SHARED_LIBRARY)


但用Cygwin生成.so文件时,提示:undefined reference to "des_encrypt"
当des_encrypt已在des.h中声明,在des.cpp中实现
不知道怎么回事,该如何在能正确的生成

...全文
914 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
凉凉二点凉 2013-09-24
  • 打赏
  • 举报
回复
你的工程里面有c又有cpp的??
ruanwenzhongf 2013-09-24
  • 打赏
  • 举报
回复
如果在android.mk中加上这一句:LOCAL_ALLOW_UNDEFINED_SYMBOLS := true 是能编译通过,但运行起来会报错。 应该是函数没有被正确编译进来。
ruanwenzhongf 2013-09-24
  • 打赏
  • 举报
回复
引用 4 楼 youngc527 的回复:
C调用CPP里面定义的函数,需要加上内什么 extern "C" { ... }
正解,非常感谢!
Darcy杨 2013-09-24
  • 打赏
  • 举报
回复
C调用CPP里面定义的函数,需要加上内什么 extern "C" { ... }
ruanwenzhongf 2013-09-24
  • 打赏
  • 举报
回复
是的,NDK给的示例代码里也有,
工程里可以有c,又有cpp的

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧