3

我因为无法弄清楚而严重拉扯我的头发(即使在谷歌上搜索了很多)。请帮忙

情况:

  1. 我有一个共享库。假设 foo.so(完全用 C++ 编写代码)
  2. 现在在一个新项目中,我想使用这个共享库 foo.so
  3. 新的项目代码也是 C++。假设新项目名称是 fooMate。
  4. 我想在 fooMate 项目 cpp 文件中调用函数的函数或使用 foo 的类,而不包括 foo 项目的实际源代码(即仅使用 foo.so 文件)

问题: 我们怎样才能做到这一点?

例如:

class foo
{
const char* giveMeAString();
}

#include “foo.h”

const char* foo::giveMeAString()
{
return “Hello World!”;
}

现在我已经在名为 foo.so 的共享库中成功编译了 foo 类

  1. 现在假设我正在编写另一个项目,该项目也有一些 CPP 代码。但是这个新的 CPP 代码想要重用静态库。

    // 宣言

类 fooMate { 无效 printDemo(); }

// 执行

#include “fooMate.h”
#include “foo.h”

void fooMate::printDemo()
{
foo *testFoo = new foo();
cout<<giveMeAString();
}

如何通过使用 foo.so 文件而不是使用 foo.cpp 的实际源代码来实现这一点

这是我正在使用的 Android.mk 文件

#Adding foo.so file in project.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := foo-lib-module
LOCAL_SRC_FILES := foo-lib.so
LOCAL_EXPORT_C_INCLUDES := include
include $(PREBUILT_SHARED_LIBRARY)

#New Project and Source code
include $(CLEAR_VARS)
LOCAL_MODULE := foomate-module
LOCAL_MODULE_FILENAME := foomate-lib

LOCAL_SRC_FILES := fooMate.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/Classes/include

include $(BUILD_SHARED_LIBRARY)
4

0 回答 0