人生处万类,知识最为贤。这篇文章主要讲述android编译surface c++程序时,报错缺少.o文件相关的知识,希望能为你提供帮助。
近期在研究android的surface系统,写了个小demo,编译的时候。一直报错,说是缺少.o文件,可是看代码一直没问题。后来发现原来是在window下编写的,然后在linux编译的时候,后缀多了^M。所以导致编译只是。
事实上提示类似的错误。肯定是代码那块地方出现了类似的错误。不知道的,查起来能累死,知道的非常快的就能知道怎么查。
顺便把源代码贴写。
testsurface.cpp
#include <
unistd.h>
#include <
string.h>
#include <
stdlib.h>
#include <
getopt.h>
#include <
cutils/memory.h>
#include<
native_window.h>
#include <
utils/Log.h>
#include <
binder/IPCThreadState.h>
#include <
binder/ProcessState.h>
#include <
binder/IServiceManager.h>
#include <
ui/GraphicBuffer.h>
#include <
gui/Surface.h>
#include <
gui/ISurfaceComposer.h>
#include <
gui/SurfaceComposerClient.h>
#include <
cutils/properties.h>
#include <
ui/DisplayInfo.h>
using namespace android;
int main(int argv,char *argc[])
{
sp<
ProcessState>
proc(ProcessState::self());
ProcessState::self()->
startThreadPool();
sp<
SurfaceComposerClient>
client = new SurfaceComposerClient();
sp<
SurfaceControl>
surfaceControl = client->
createSurface(String8("testsurface"),240, 160, PIXEL_FORMAT_RGBX_8888, 0);
DisplayInfo dinfo;
sp<
IBinder>
display = SurfaceComposerClient::getBuiltInDisplay(
ISurfaceComposer::eDisplayIdMain);
SurfaceComposerClient::getDisplayInfo(display, &
dinfo);
uint32_t dispw = dinfo.w;
uint32_t disph = dinfo.h;
/* create backgound surface */
sp<
SurfaceControl>
bg_surfaceControl = client->
createSurface(
String8("test-bg-surface"), dispw, disph, PIXEL_FORMAT_RGBX_8888);
sp<
Surface>
bg_surface = bg_surfaceControl->
getSurface();
/* set background layer z-order */
SurfaceComposerClient::openGlobalTransaction();
bg_surfaceControl->
setLayer(200000);
SurfaceComposerClient::closeGlobalTransaction();
/* clear background layer black */
ANativeWindow_Buffer outBuffer;
bg_surface->
lock(&
outBuffer, NULL);
ssize_t bpr = outBuffer.stride * bytesPerPixel(outBuffer.format);
android_memset32((uint32_t*)outBuffer.bits, 0xFF000000, bpr * outBuffer.height);
bg_surface->
unlockAndPost();
sleep(5);
bg_surface->
lock(&
outBuffer, NULL);
bpr = outBuffer.stride * bytesPerPixel(outBuffer.format);
android_memset32((uint32_t*)outBuffer.bits, 0xF800, bpr * outBuffer.height);
bg_surface->
unlockAndPost();
sleep(5);
bg_surface->
lock(&
outBuffer, NULL);
bpr = outBuffer.stride * bytesPerPixel(outBuffer.format);
android_memset32((uint32_t*)outBuffer.bits, 0x7e56, bpr * outBuffer.height);
bg_surface->
unlockAndPost();
sleep(5);
return 0;
}
Android.mk
【android编译surface c++程序时,报错缺少.o文件】LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= testsurface.cpp
LOCAL_C_INCLUDES := external/skia/include/core \
frameworks/native/include/android
LOCAL_SHARED_LIBRARIES := libcutils \
libutils \
libbinder \
libui \
libgui \
LOCAL_MODULE:= testsurface
LOCAL_MODULE_TAGS := tests
include $(BUILD_EXECUTABLE)
推荐阅读
- acer win7纯净版X86位系统下载
- 自己动手写最简单的Android驱动---LED驱动的编写
- 轻量级高性能ORM框架(Dapper高级玩法)
- Android系统剪切板
- apple 团队电话
- linux 中 virtualenvwrapper的使用
- 想学android进来看看吧~ ~
- 原创源码角度分析Android的消息机制系列——Handler的工作原理
- [android开发篇]activity组件篇