gpt4 book ai didi

android - 在 Android 上为共享库导出类时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:41 24 4
gpt4 key购买 nike

我有一个核心项目,我正在将其构建为共享库。在其中一个 header 中,我定义了一个简单的类,如下所示:

typedef pthread_mutex_t Mutex;

class CORE_API AutoLock
{
public:
AutoLock(Mutex& m);
~AutoLock();

private:
AutoLock();
AutoLock(const AutoLock&);
AutoLock& operator=(const AutoLock&);

Mutex m_Mutex;
};

其中 CORE_API 定义为:

#ifdef CORE_DLL
#define CORE_API __attribute__ ((dllexport))
#else
#define CORE_API __attribute__ ((dllimport))
#endif

在核心的 Android.mk 中,我在 LOCAL_CFLAGS 下定义了 CORE_DLL。但是,在构建时,我收到警告:

warning: 'dllimporot' attribute directive ignored

当 ndk-build 进入我想使用 AutoLock 类的其他项目时,我收到错误:

error: 'AutoLock::AutoLock()' is private
error: within this context

为什么编译器会忽略 dllexport 属性?我希望一旦这个问题得到解决,我的其他项目应该可以构建并能够毫无问题地使用 AutoLock 类。

最佳答案

在 Android (Linux) 上创建共享库的方式与在 Windows 上不同。在 Windows 中,您有特殊的 dllimport 和 dllexport 指令,但在 Android (Linux) 上没有。

当使用你的共享库时,你应该只用 -lYourLibraryName 编译

这可能对您有帮助:http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

关于android - 在 Android 上为共享库导出类时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8649630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com