小编Ted*_*ton的帖子

OS X是否有等效的lsusb

这个问题似乎是遍布谷歌,但答案都指向使用系统概述.这很好,但是使用System Profiler你得到的东西看起来像这样:

            DasKeyboard:

              Product ID: 0x1919
              Vendor ID: 0x04d9  (Holtek Semiconductor, Inc.)
              Version: 1.06
              Speed: Up to 1.5 Mb/sec
              Location ID: 0x1d114000 / 11
              Current Available (mA): 500
              Current Required (mA): 100

            USB2.0 Hub:

              Product ID: 0x0608
              Vendor ID: 0x05e3  (Genesys Logic, Inc.)
              Version: 32.98
              Speed: Up to 480 Mb/sec
              Location ID: 0x1d113000 / 10
              Current Available (mA): 500
              Current Required (mA): 100

                Microsoft Basic Optical Mouse v2.0 :

                  Product ID: 0x00cb
                  Vendor ID: 0x045e  (Microsoft Corporation)
                  Version: 1.99
                  Speed: …
Run Code Online (Sandbox Code Playgroud)

macos usb darwin lsusb

81
推荐指数
6
解决办法
8万
查看次数

如何在命令行中给出修改路径名的MinGW和MSYS

在Windows上,我使用CodeSourcery的交叉编译器套件为ARM/Linux交叉编译程序.我使用MinGW MSYS作为我的命令解释器,并且经常会破坏我的路径和路径名.例如,为了构建我的程序,我调用了

arm-none-linux-gnueabi-gcc.exe -Wall -g \
    -Wl,--dynamic-linker=/usr/lib/myrpath/ld-linux.so.3 \
    -Wl,-rpath=/usr/lib/myrpath \
    -I../targetsysroot/usr/include \
    myprogram.c -o myprogram
Run Code Online (Sandbox Code Playgroud)

当然,我想/usr/lib/myrpath逐字插入myprogram可执行文件 - 我正在编译的ARM Linux目标不使用MinGW或MSYS.但是这里最终会涉及到它:

...
0x0000000f (RPATH)            Library rpath: [C:/MinGW/msys/1.0/lib/myrpath]
...
Run Code Online (Sandbox Code Playgroud)

不完全是我想要的.如果我直接在cmd.exe命令行上调用GCC,我会在可执行文件中获得正确的rpath.如果我在MSYS命令行上调用GCC,我会得到损坏的rpath.如果我使用从cmd.exe命令行使用make运行的Makefile调用GCC,我仍然会得到一个受损的rpath(!)

我有什么想法可以关闭这种烦人的行为?

gcc mingw rpath cross-compiling codesourcery

53
推荐指数
5
解决办法
2万
查看次数

提升asio ssl async_shutdown总是以错误结束?

我有一个小的ssl客户端,我已经在boost 1.55 asio编程,我想弄清楚为什么boost::asio::ssl::stream::async_shutdown()总是失败.客户端与boost文档中的ssl客户端示例非常相似(几乎完全相同),因为它通过boost::asio::ip::tcp::resolver::async_resolve()- > boost::asio::ssl::stream::async_connect()- > boost::asio::ssl::stream::async_handshake()回调序列.所有这些都按预期工作,async_handshake()回调变得非常明确boost::system::error_code.

async_handshake()回调中,我调用async_shutdown()(我不传输任何数据 - 这个对象更多用于测试握手):

void ClientCertificateFinder::handle_handshake(const boost::system::error_code& e)
{
    if ( !e )
    {
        m_socket.async_shutdown( boost::bind( &ClientCertificateFinder::handle_shutdown_after_success, 
            this, 
            boost::asio::placeholders::error ) );
    }
    else
    {
        m_handler( e, IssuerNameList() );
    }
}
Run Code Online (Sandbox Code Playgroud)

handle_shutdown_after_success()然后调用,但始终有错误?错误是值= 2英寸asio.misc,即"文件结束".我用各种ssl服务器试过这个,我似乎总是得到这个asio.misc错误.这不是一个潜在的openssl错误告诉我,我可能会以某种方式滥用asio ......?

任何人都知道为什么会发生这种情况?我的印象是关闭连接async_shutdown()是正确的事情要做,但我想我可以打电话boost::asio::ssl::stream.lowestlayer().close()从openssl下关闭套接字,如果这是预期的方式这样做(事实上asio ssl示例似乎表明这是正确的关闭方式).

c++ ssl boost openssl boost-asio

28
推荐指数
1
解决办法
8617
查看次数

在Qt 5中,显示多显示器全屏QWidget窗口的正确方法是什么?

我有一个Windows和Mac程序,可以在多个显示器上切换到全屏模式.在Qt 4中,似乎(我找不到关于如何执行此操作的明确文档),例如"正确"的方法是通过QMainWindow为机器上的N个监视器创建N ,调用QWidget::move()N监视器的顶部-left x,y坐标,然后调用QWidget::setWindowState(Qt::WindowFullScreen).我不知道这是否是正确的事情 - 再次,我无法在Qt中找到任何文档或示例.

在Qt 5.4.1中,这似乎是"破坏"(如果它一直是正确的事情),特别是在Windows 7上.我仍然试图找出问题所在,但看起来似乎QMainWindow是退出全屏模式.

我刚才清楚这一点,这样做的正确方法是什么?我发现这个论坛帖子似乎暗示我应该设置s 所持有的QScreen底层QWindow对象QMainWindow,但这似乎在我的测试中不起作用.这是我写的一个示例程序:

app.h:

#include <vector>
#include <QObject>

class QMainWindow;

class app : public QObject
{
    Q_OBJECT
public:
    int run(int argc, char** argv);

public slots:
    void add_window();
    void remove_window();
    void windows_go_to_screens();
    void windows_go_to_screens_old();
    void windows_go_to_primary_screen();
    void windows_fullscreen();
    void windows_nonfullscreen();

private:
    QMainWindow * create_window(const char * id);
    void init_menus( QMainWindow * w );

    std::vector<QMainWindow *> m_windows;
}; …
Run Code Online (Sandbox Code Playgroud)

c++ qt fullscreen qt5

21
推荐指数
1
解决办法
9415
查看次数

在一个进程中混合和匹配Visual C++运行时DLL文件有多糟糕?

我有一个使用Visual Studio 2012构建的应用程序,因此它依赖于MSVCP110.DLLMSVCR110.DLL.我正在使用另一个DLL文件,它似乎是用Visual Studio 2010构建的,依赖于MSVCP100.DLLMSVCR100.DLL.我有另一个DLL是使用Visual Studio 2008构建并依赖于MSVCR90.DLL.

这是坏事吗?真的很糟糕吗?我应该担心吗?我问的原因是运行时堆分配器抱怨堆损坏.这可能与混合运行时版本有关吗?

c c++ dll winapi visual-c++

20
推荐指数
1
解决办法
3945
查看次数

为什么我的 (C++) 编译器在使用 std::endl 时想要实例化我的参数包类?

考虑以下短节目。

\n
#include <iostream>\n\ntemplate< typename ... Ts >\nclass foobar\n{\n    static_assert( sizeof...(Ts) > 0 );\n};\n\ntemplate< typename ... Ts >\nstd::ostream& operator<<( std::ostream& o, const foobar< Ts... >& )\n{\n    return o;\n}\n\nint main(void)\n{\n    std::cout << "This has nothing to do with foobar" << std::endl;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

当我们尝试编译这个时,我们得到......

\n
ted@tedscomputer:~/Projects/emptypack$ g++ -o emptypack main.cpp\nmain.cpp: In instantiation of \xe2\x80\x98class foobar<>\xe2\x80\x99:\nmain.cpp:17:63:   required from here\nmain.cpp:6:34: error: static assertion failed\n    6 |     static_assert( sizeof...(Ts) > 0 );\n      |                    ~~~~~~~~~~~~~~^~~\nted@tedscomputer:~/Projects/emptypack$\n
Run Code Online (Sandbox Code Playgroud)\n

我知道这std::endl有点奇怪(以至于它实际上有自己的 StackOverflow 标签),但是这里到底出了什么问题?为什么编译器尝试使用空类型参数实例化我完全不相关的类,失败,然后生成错误?

\n

也许更重要的是,每次我编写一个带有参数包的类时,我是否必须确保它可以在没有类型参数的情况下实例化,即使这对程序逻辑没有任何意义,以防万一它在一英里之内std::endl

\n

c++ templates iostream endl

19
推荐指数
1
解决办法
396
查看次数

clang的`cpp -dD`相当于什么?

如果我想找出gcc给我的隐式预处理器定义的内容,我可以输入echo "" | cpp -dD.有谁知道clang的等价物是什么?

gcc clang c-preprocessor

18
推荐指数
2
解决办法
7883
查看次数

纹理在OpenGL中有多少个mipmap

没关系,我是第一个创建纹理的人,我应该非常清楚我为它加载/生成了多少个mipmap.我这样做是为了进行单元测试.似乎没有一个glGetTexParameter参数可以找到它.我最接近的是这样的:

int max_level;
glGetTexParameter( GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, &max_level );
int max_mipmap = -1;
for ( int i = 0; i < max_level; ++i )
{
    int width;
    glGetTexLevelParameter( GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &width );
    if ( 0 == width )
    {
        max_mipmap = i-1;
        break;
    }
)
Run Code Online (Sandbox Code Playgroud)

无论如何,glGetTexLevelParameter()如果我使用的是NVidia GPU,将为不存在的mipmap返回0宽度,但是对于Mesa,它会返回GL_INVALID_VALUE,这让我相信这是非常错误的事情.

如何找出我填充纹理的mipmap级别?

opengl textures pyopengl mipmaps

18
推荐指数
2
解决办法
8425
查看次数

有人可以指向我的bitbake或openembedded教程吗?

我一直在为BeagleBoard 的Angstrom Linux发行版工作.任何人都可以指点我的bitbake和OpenEmbedded如何实际工作的教程或参考?例如,当我像这样调用bitbake时:

bitbake virtual/kernel
Run Code Online (Sandbox Code Playgroud)

实际发生了什么?我已经研究了Angstrom的配方并搜索了Angstrom文件系统,但我似乎无法找到对虚拟或内核的引用.我觉得使用这个工具链并制作内核补丁并没有真正了解bitbake的工作方式,我感到有点沮丧.

linux kernel beagleboard openembedded angstrom-linux

13
推荐指数
1
解决办法
5157
查看次数

我什么时候调用boost :: asio :: streambuf :: consume()和boost :: asio :: streambuf :: commit()?

我正在努力理解boost::asio::streambuf::consume()boost::asio::streambuf::commit()打电话.在文档中,我们有例子,

boost::asio::streambuf b;
std::ostream os(&b);
os << "Hello, World!\n";

// try sending some data in input sequence
size_t n = sock.send(b.data());

b.consume(n); // sent data is removed from input sequence
Run Code Online (Sandbox Code Playgroud)

boost::asio::streambuf b;

// reserve 512 bytes in output sequence
boost::asio::streambuf::mutable_buffers_type bufs = b.prepare(512);

size_t n = sock.receive(bufs);

// received data is "committed" from output sequence to input sequence
b.commit(n);

std::istream is(&b);
std::string s;
is >> s;
Run Code Online (Sandbox Code Playgroud)

我理解这两个调用就像我理解文档中有关它们的内容一样 - 调用consume()从内部的输入序列中删除字符boost::asio::streambuf,并调用commit()将字符从 …

c++ boost iostream boost-asio

9
推荐指数
1
解决办法
3036
查看次数