POCO C++库在Android 平台上集成(2)

本文记录了在mac os环境下,由于使用预编译的POCO库导致的Android集成问题,以及通过自编译POCO Foundation库解决该问题的过程。提供了详细的自编译脚本和集成步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明原创地址:http://blog.youkuaiyun.com/iflychenyang/article/details/8534341

很不幸,mac os上编译出来的poco静态库,集成编译时出现错误,提示找不到头文件(ndk-build error: string: No such file or directory),应该是标准库没有编译好,今天通过直接编写android.mk文件重新编译了下,目前可以编译Foundation库,先把脚本放到这里,供后续查看。

POCO编译相关脚本:

#
# Android.mk
#
# POCO Foundation
#
# create by: yangchen (陈阳)
#

LOCAL_PATH       := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE     := PocoFoundation

LOCAL_CFLAGS     := -DPOCO_ANDROID -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING -DPOCO_NO_SHAREDMEMORY
LOCAL_CPPFLAGS   := -frtti -fexceptions

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include \									

	$(LOCAL_PATH)/src \

LOCAL_SRC_FILES := \
    src/AbstractObserver.cpp \
    src/ActiveDispatcher.cpp \
    src/adler32.c \
    src/ArchiveStrategy.cpp \
    src/Ascii.cpp \
    src/ASCIIEncoding.cpp \
    src/AsyncChannel.cpp \
    src/AtomicCounter.cpp \
    src/Base64Decoder.cpp \
    src/Base64Encoder.cpp \
    src/BinaryReader.cpp \
    src/BinaryWriter.cpp \
    src/Bugcheck.cpp \
    src/ByteOrder.cpp \
    src/Channel.cpp \
    src/Checksum.cpp \
    src/compress.c \
    src/Condition.cpp \
    src/Configurable.cpp \
    src/ConsoleChannel.cpp \
    src/CountingStream.cpp \
    src/crc32.c \
    src/DateTime.cpp \
    src/DateTimeFormat.cpp \
    src/DateTimeFormatter.cpp \
    src/DateTimeParser.cpp \
    src/Debugger.cpp \
    src/deflate.c \
    src/DeflatingStream.cpp \
    src/DigestEngine.cpp \
    src/DigestStream.cpp \
    src/DirectoryIterator.cpp \
    src/DynamicAny.cpp \
    src/DynamicAnyHolder.cpp \
    src/Environment.cpp \
    src/ErrorHandler.cpp \
    src/Event.cpp \
    src/EventArgs.cpp \
    src/Exception.cpp \
    src/File.cpp \
    src/FileChannel.cpp \
    src/FileStream.cpp \
    src/FileStreamFactory.cpp \
    src/Format.cpp \
    src/Formatter.cpp \
    src/FormattingChannel.cpp \
    src/Glob.cpp \
    src/Hash.cpp \
    src/HashStatistic.cpp \
    src/HexBinaryDecoder.cpp \
    src/HexBinaryEncoder.cpp \
    src/infback.c \
    src/inffast.c \
    src/inflate.c \
    src/InflatingStream.cpp \
    src/inftrees.c \
    src/Latin1Encoding.cpp \
    src/Latin9Encoding.cpp \
    src/LineEndingConverter.cpp \
    src/LocalDateTime.cpp \
    src/LogFile.cpp \
    src/Logger.cpp \
    src/LoggingFactory.cpp \
    src/LoggingRegistry.cpp \
    src/LogStream.cpp \
    src/Manifest.cpp \
    src/MD4Engine.cpp \
    src/MD5Engine.cpp \
    src/MemoryPool.cpp \
    src/MemoryStream.cpp \
    src/Message.cpp \
    src/Mutex.cpp \
    src/NestedDiagnosticContext.cpp \
    src/Notification.cpp \
    src/NotificationCenter.cpp \
    src/NotificationQueue.cpp \
    src/NullChannel.cpp \
    src/NullStream.cpp \
    src/NumberFormatter.cpp \
    src/NumberParser.cpp \
    src/Path.cpp \
    src/PatternFormatter.cpp \
    src/pcre_chartables.c \
    src/pcre_compile.c \
    src/pcre_exec.c \
    src/pcre_fullinfo.c \
    src/pcre_globals.c \
    src/pcre_maketables.c \
    src/pcre_newline.c \
    src/pcre_ord2utf8.c \
    src/pcre_study.c \
    src/pcre_tables.c \
    src/pcre_try_flipped.c \
    src/pcre_ucd.c \
    src/pcre_valid_utf8.c \
    src/pcre_xclass.c \
    src/Pipe.cpp \
    src/PipeImpl.cpp \
    src/PipeStream.cpp \
    src/PriorityNotificationQueue.cpp \
    src/Process.cpp \
    src/PurgeStrategy.cpp \
    src/Random.cpp \
    src/RandomStream.cpp \
    src/RefCountedObject.cpp \
    src/RegularExpression.cpp \
    src/RotateStrategy.cpp \
    src/Runnable.cpp \
    src/RWLock.cpp \
    src/Semaphore.cpp \
    src/SHA1Engine.cpp \
    src/SharedLibrary.cpp \
    src/SharedMemory.cpp \
    src/SignalHandler.cpp \
    src/SimpleFileChannel.cpp \
    src/SplitterChannel.cpp \
    src/Stopwatch.cpp \
    src/StreamChannel.cpp \
    src/StreamConverter.cpp \
    src/StreamCopier.cpp \
    src/StreamTokenizer.cpp \
    src/String.cpp \
    src/StringTokenizer.cpp \
    src/SynchronizedObject.cpp \
    src/SyslogChannel.cpp \
    src/Task.cpp \
    src/TaskManager.cpp \
    src/TaskNotification.cpp \
    src/TeeStream.cpp \
    src/TemporaryFile.cpp \
    src/TextBufferIterator.cpp \
    src/TextConverter.cpp \
    src/TextEncoding.cpp \
    src/TextIterator.cpp \
    src/Thread.cpp \
    src/ThreadLocal.cpp \
    src/ThreadPool.cpp \
    src/ThreadTarget.cpp \
    src/TimedNotificationQueue.cpp \
    src/Timer.cpp \
    src/Timespan.cpp \
    src/Timestamp.cpp \
    src/Timezone.cpp \
    src/Token.cpp \
    src/trees.c \
    src/UnicodeConverter.cpp \
    src/Unicode.cpp \
    src/URI.cpp \
    src/URIStreamFactory.cpp \
    src/URIStreamOpener.cpp \
    src/UTF8Encoding.cpp \
    src/UTF8String.cpp \
    src/UTF16Encoding.cpp \
    src/UUID.cpp \
    src/UUIDGenerator.cpp \
    src/Void.cpp \
    src/Windows1252Encoding.cpp \
    src/zutil.c

include $(BUILD_SHARED_LIBRARY)

#
# Application.mk
#
# POCO Foundation
#
# create by: yangchen (陈阳)
#

APP_CFLAGS += -fexceptions 
APP_STL := gnustl_static

POCO集成相关脚本及测试代码:

#
# Application.mk
#
# POCO Foundation 集成测试
#
# create by: yangchen (陈阳)
#

LOCAL_PATH :=$(call my-dir)

include $(CLEAR_VARS)

LOCAL_CFLAGS += -I$(LOCAL_PATH)/include
LOCAL_CPPFLAGS := -frtti -fexceptions

LOCAL_C_INCLUDES := $(LOCAL_PATH)

LOCAL_MODULE := BlcCore-jni

LOCAL_LDLIBS := -L$(LOCAL_PATH)/lib -lPocoFoundation -llog 

LOCAL_SRC_FILES := \
	TestClass.cpp \
	TestClassImpl.cpp

include $(BUILD_SHARED_LIBRARY)

#
# Application.mk
#
# POCO Foundation 集成测试
#
# create by: yangchen (陈阳)
#

APP_CFLAGS += -fexceptions 
APP_STL := gnustl_static

// TestClass.h
#ifndef CORE_TEST_CLASS_INCLUDED
#define CORE_TEST_CLASS_INCLUDED

namespace YANGCHEN
{
	class TestClassImpl;

	class TestClass
	{
	public:
		TestClass(void);
		~TestClass(void);

		int year() const;

	private:
		TestClassImpl* pImpl;
	};
}

#endif

// TestClass.cpp
#include "TestClass.h"
#include "TestClassImpl.h"

namespace YANGCHEN
{
	TestClass::TestClass(void)
		: pImpl(new TestClassImpl)
	{
	}


	TestClass::~TestClass(void)
	{
		delete pImpl;
	}

	int TestClass::year() const
	{
		return pImpl->year();
	}
}

// TestClassImp.h
#ifndef CORE_TEST_CLASS_IMPL_INCLUDED
#define CORE_TEST_CLASS_IMPL_INCLUDED

#include "Poco/DateTime.h"

namespace YANGCHEN
{
	class TestClassImpl
	{
	public:
		TestClassImpl(void);
		~TestClassImpl(void);

		int year() const
		{
			return dt.year();
		}

	private:
		Poco::DateTime dt;
	};
}

#endif

// TestClassImp.cpp
#include "TestClassImpl.h"

namespace YANGCHEN
{
	TestClassImpl::TestClassImpl(void)
	{
	}


	TestClassImpl::~TestClassImpl(void)
	{
	}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值