我正在寻找一种方法将本机库打包到AAR包中,因此可以通过gradle脚本中的依赖项声明来使用它.
本机库我指的是.cpp文件集或编译的静态库和一组头文件.所以,我的意思是应用程序本身将从本机代码调用库,而不是从Java调用.换句话说,库需要编译应用程序的本机代码.这样就可以轻松管理本机代码的依赖关系.
它甚至可能吗?
到目前为止,我只能找到很多关于如何使用.so文件及其Java接口创建JNI本机库的AAR的问题/示例,因此lib只是一个带有本机实现的Java库,但这不是我需要的.
我正在尝试编译以下代码(有点极小的例子),文件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) 尝试编译以下代码:
#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)
消除编译错误。我想知道为什么会这样?第一个变体不等同于第二个变体吗?
这是使用 …
如何在asciidoc/asciidoctor中定义宏?
我将在文档的许多部分使用重复模式,因此我想进行参数化替换以避免多次输入相同的内容.
特别是,我有以下asciidoc片段:
{set:cellbgcolor:grey}
[grid=none, frame=none]
|===
| X >| Y
|===
{set:cellbgcolor!}
Run Code Online (Sandbox Code Playgroud)
我需要将它放在文档的几个部分中,用不同的文本替换来代替X和Y.我该如何实现?
为什么使构造函数显式不会阻止它被派生类隐式调用?
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编译上面的代码,没有任何错误或警告.