一个unique_ptr不能被推回到一个std::vector,因为它是不可复制的,除非std::move被使用。但是,让我们F使用一个返回a的函数unique_ptr,然后std::vector::push_back(F())允许该操作。下面是一个示例:
#include <iostream>
#include <vector>
#include <memory>
class A {
public:
int f() { return _f + 10; }
private:
int _f = 20;
};
std::unique_ptr<A> create() { return std::unique_ptr<A>(new A); }
int main() {
std::unique_ptr<A> p1(new A());
std::vector< std::unique_ptr<A> > v;
v.push_back(p1); // (1) This fails, should use std::move
v.push_back(create()); // (2) This doesn't fail, should use std::move?
return 0;
}
Run Code Online (Sandbox Code Playgroud)
(2)允许,但(1)不允许。这是因为返回的值被隐式地移动了吗?
在中(2) …
我正在尝试clang-tidy与集成cmake,但有些文件属于我想忽略的特定目标。
有没有办法让 clang-tidy 忽略特定目录下的文件或名称与特定模式匹配的文件?
根据 GNU 文档ld,一个NOLOAD部分的工作原理如下:
“(NOLOAD)”指令将标记一个在运行时不加载的节。链接器将正常处理该节,但会对其进行标记,以便程序加载器不会将其加载到内存中。
现在,关于程序加载器,根据维基百科:
嵌入式系统通常没有加载程序,而是直接从 ROM 执行代码。为了加载操作系统本身,作为引导的一部分,使用了专门的引导加载程序。
那么,NOLOAD固件/嵌入式软件的一个部分到底有什么作用呢?
我正在尝试学习如何从Python访问Google云端硬盘,但我遇到了问题.
我按照谷歌官方网站的教程:https://developers.google.com/drive /... t-python?hl = es 另外,我已经看过关于这个的视频教程,我想我做的比视频家伙.
我告诉你我按照字面意思执行的步骤:
1 - 安装pip工具以从Google安装SDK.
2 - 从Google安装SDK:"pip install --upgrade google-api-python-client"
在这一步一切顺利,事实上,使进口等没有错.
3 - Drive Enable API:我按照原样执行步骤,创建"本机应用程序的客户端ID"和"Web应用程序的客户端ID"
4 - 我创建文档"document.txt"并快速启动时复制源代码.
5 - 我通过出现在"本机应用程序的客户端ID"中替换"CLIENT_ID"和"CLIENT_SECRET"(我还使用Web应用程序进行了测试)
6 - 我跑,屏幕输出是:
No handlers could be found for logger "oauth2client.util"
Go to the following link in your browser:
<link>
Enter verification code:
Run Code Online (Sandbox Code Playgroud)
寻找解决方案,我发现了一些有关该错误的信息:
import logging
...
logging.basicConfig()
Run Code Online (Sandbox Code Playgroud)
现在,输出是:
C:\workspaces\asd\prsGoogleApi>quickstart.py
WARNING:oauth2client.util:__init__() takes at most 4 positional arguments (5 giv
en)
Go to the following link in your browser: …Run Code Online (Sandbox Code Playgroud) 我正在开发安卓系统。我需要保存位图而不丢失质量。
我尝试过使用compress()位图方法,将质量设置为 100。这对我不起作用,位图损失了太多质量。我已经用 JPEG 和 PNG 格式进行了测试。
我已经测试过将位图复制到 a ByteBuffer,然后提取byte[]并使用FileOutputStream. 在这种情况下,我无法显示使用这种方式保存的图像,我只能看到一个空白页面。
我的问题是,有什么方法可以在不压缩的情况下将位图保存在SD卡中吗?
编辑:这是我的代码的一部分
public class MainActivity extends ActionBarActivity {
[...]
@Override
protected void onActivityResult(int reqCode, int resCode, Intent handler){
super.onActivityResult(reqCode, resCode, handler);
if(reqCode == CAPTURE_IDENTIFIER && resCode == Activity.RESULT_OK){
// THis is that I have tested.
// Object o = handler.getData();
// Object o2 = handler.getExtras().getParcelable("data");
// Object o3 = handler.getExtras().get("data");
// Object o4 = handler.getParcelableExtra("data");
//
prepareCapture();
startActivityForResult(cameraHandler, CAPTURE_IDENTIFIER);
}
}
private …Run Code Online (Sandbox Code Playgroud) 我需要检测图像中对象的轮廓。为此,我使用 OpenCV 库的 function findContours。我正在使用OpenCV 3.0 (x86)我Windows 10 (x64)用contrib modules.
问题是,当我尝试使用此功能时,应用程序崩溃了。该错误不是异常或断言失败,我只能看到一个窗口告诉我应用程序已崩溃:
我已经检查过我传递的图像findContours是二进制图像:
我检查了图像的类型,是0,和CV_8Uvalue一样。
我什至检查了直方图,只有值为 0 和 1 的像素。
I have also searched for examples from OpenCV tutorials and forums, and I have tried to do exactly the same than in the example, and the program crashes again.
Here is the code that I'm executing:
// This is the main function:
int test_findContours(const std::string &path){
Mat …Run Code Online (Sandbox Code Playgroud) 我正在ARM Cortex M4 ( STM32F4xxxx ) 中工作,我试图了解二进制文件 (*.elf和*.bin) 是如何在内存中构建和闪存的,特别是在内存位置方面。具体来说,我不明白的是如何LMA从实际的二进制文件偏移量“翻译”。让我用一个例子来解释:
我有一个*.elf文件,其(相关)部分如下:(从objdump -h)
my_file.elf: file format elf32-littlearm
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000001c4 08010000 08010000 00020000 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .bootloader 00004000 08000000 08000000 00010000 2**0
CONTENTS, ALLOC, LOAD, DATA
Run Code Online (Sandbox Code Playgroud)
根据该文件,VMA 和 LMA 是0x8000000和0x8010000,这完全没问题,因为它们在链接器脚本文件中以这种方式定义。此外,根据该报告,这些部分的偏移量分别为0x10000和0x20000。接下来,我执行以下命令来转储对应的内存.bootloader:
xxd -s 0x10000 -l 16 my_file.elf
00010000: b007 …Run Code Online (Sandbox Code Playgroud) 我有一个javah的问题,我已经阅读了大约4或5个stakcoverflow帖子,错误"已解决",但任何事情对我有用.
我的问题:
当我执行javah命令时,我有这个错误:
Error: cannot access android.support.v7.app.ActionBarActivity
class file for android.support.v7.app.ActionBarActivity not found
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
这是我测试过的命令:
C:\Users\MyUser\workspace3\PruebaApp\jni\include>javah -classpath ../../bin/classes;C:\Users\MyUser\AppData\Local\Android\sdk\platforms\android-14\android.jar -o ACK.h com.test.prueba.ACK
Run Code Online (Sandbox Code Playgroud)
我已经尝试了同样的命令只有"/"而只有"\"用于分离目标.
我用android-11,android-14和android-21试过了.
我试图将以下外部jar添加到我的项目中:"android-support-v4.jar"和"android-support-v7-appcompat.jar"
我试图用eclipse创建一个外部构建配置,就像这里:找不到Javah Error android.app.Activity
我正在使用的工具
我在Windows 8.1上使用eclipse juno.
我执行命令的文件夹是{project_dir}/jni/include.我从不同的文件夹中尝试过它,正确地修改了命令.
包含本机函数的.java文件是包中的"ACK.java":"com.test.prueba"
在项目中,我使用的android库是android 5.0.1
我能做什么?提前致谢.
我需要将 jdb 调试会话附加到在远程主机中执行的 java 应用程序,但我无法做到。我在 linux 上工作,使用 openjdk 1.8.0_65,64 位服务器 VM。
为了启用端口侦听,我运行了 java 应用程序,在命令行中添加了以下参数:
-Xdebug -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:8000,server=y,suspend=n
Run Code Online (Sandbox Code Playgroud)
控制台中显示以下消息:
Listening for transport dt_socket at address: 8000
Run Code Online (Sandbox Code Playgroud)
应用程序开始正常运行。
然后,从远程主机,我执行以下命令:
> jdb -connect com.sun.jdi.SocketAttach:hostname=<remote_host>,port=8000
Run Code Online (Sandbox Code Playgroud)
它失败了,输出是:
java.net.ConnectException: Conexión rehusada
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
[...]
Fatal error:
Unable to attach to target VM.
Run Code Online (Sandbox Code Playgroud)
为了检查端口是否实际打开并且我可以从远程主机连接到它,我执行了以下操作:
让我们调用正在执行 java 应用程序的主机。hostA,以及我想要附加的那个jdb hostB,然后:
检查 hostA 中的 8000 端口上是否确实有一个套接字正在侦听
> netstat -tualpn | grep :8000
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 1399/<app_name>
Run Code Online (Sandbox Code Playgroud)
在hostA中,检查我是否可以连接到端口8000(换句话说,尝试从本地主机连接)
> nc …Run Code Online (Sandbox Code Playgroud) 我建立一个*.elf文件ARM使用MacOS的范围内cmake。CMake正在-Wl,-search_paths_first -Wl,-headerpad_max_install_name自动添加标志,这会导致生成无效*.elf文件。我得到错误warning: cannot find entry symbol arch_paths_first; defaulting to 00000000080001e0。
我试图在没有这些选项的情况下执行 arm gcc 命令,它运行良好。
我怎样才能停止cmake添加这些标志?