小编iga*_*gis的帖子

适用于本机库的Android AAR包

我正在寻找一种方法将本机库打包到AAR包中,因此可以通过gradle脚本中的依赖项声明来使用它.

本机库我指的是.cpp文件集或编译的静态库和一组头文件.所以,我的意思是应用程序本身将从本机代码调用库,而不是从Java调用.换句话说,库需要编译应用程序的本机代码.这样就可以轻松管理本机代码的依赖关系.

它甚至可能吗?

到目前为止,我只能找到很多关于如何使用.so文件及其Java接口创建JNI本机库的AAR的问题/示例,因此lib只是一个带有本机实现的Java库,但这不是我需要的.

android android-ndk maven-central android-gradle-plugin aar

20
推荐指数
2
解决办法
6213
查看次数

clang:当存在公共虚拟继承时,不能转换为私有基础

我正在尝试编译以下代码(有点极小的例子),文件test.cpp:

#include <iostream>
#include <memory> 

class Shared : public std::enable_shared_from_this<Shared>{
public:
    int prea;
};

class Widget : public virtual Shared{
    int a;
public:
    ~Widget(){
        a = 7;
    }
};

class Container : virtual public Widget{
};

class List : private Container, virtual public Widget{
public:
    int c;
};


int main(int argc, char** argv){
    auto c = std::make_shared<List>();
    c->c = 3;

    std::cout << c->c << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用clang++方法如下:

clang++ test.cpp -std=c++11
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_base.h:1106:50: error:
      cannot …
Run Code Online (Sandbox Code Playgroud)

c++ clang clang++

10
推荐指数
1
解决办法
256
查看次数

C++ lambda 通过父 lambda 捕获值的副本进行捕获

尝试编译以下代码:

#include <functional>

void test() {

    int a = 5;

    std::function<void()> f = [a](){
        [a]()mutable{ // isn't it capture 'a' by copy???
            a = 13; // error: assignment of read-only variable 'a'
        }();
    };

}
Run Code Online (Sandbox Code Playgroud)

给出error: assignment of read-only variable 'a'错误。

通过在a捕获中添加花括号来更改代码:

#include <functional>

void test() {

    int a = 5;

    std::function<void()> f = [a](){
        [a{a}]()mutable{ // this explicitly copies a
            a = 13; // error: assignment of read-only variable ‘a’
        }();
    };

}
Run Code Online (Sandbox Code Playgroud)

消除编译错误。我想知道为什么会这样?第一个变体不等同于第二个变体吗?

这是使用 …

c++ g++ language-lawyer clang++

10
推荐指数
1
解决办法
176
查看次数

如何定义自己的asciidoc宏

如何在asciidoc/asciidoctor中定义宏?

我将在文档的许多部分使用重复模式,因此我想进行参数化替换以避免多次输入相同的内容.

特别是,我有以下asciidoc片段:

{set:cellbgcolor:grey}
[grid=none, frame=none]
|===
| X >| Y
|===
{set:cellbgcolor!}
Run Code Online (Sandbox Code Playgroud)

我需要将它放在文档的几个部分中,用不同的文本替换来代替X和Y.我该如何实现?

asciidoc asciidoctor

6
推荐指数
1
解决办法
1378
查看次数

C++:显式构造函数由派生类隐式调用

为什么使构造函数显式不会阻止它被派生类隐式调用?

class A{
public:
    explicit A(){}
};

class B : public A{
public:
    B(){ //Constructor A() is called implicitly

        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的程序中遇到编译器错误时,我遇到了这种情况,这样可以省去很多时间来查找错误.现在我改变了A的默认构造函数来接受一个虚拟的"int"参数来实现它,但不应该"显式"关键字为此工作?

g ++ - 4.8编译上面的代码,没有任何错误或警告.

c++

3
推荐指数
1
解决办法
649
查看次数