这个问题似乎是遍布谷歌,但答案都指向使用系统概述.这很好,但是使用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) 在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(!)
我有什么想法可以关闭这种烦人的行为?
我有一个小的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示例似乎表明这是正确的关闭方式).
我有一个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) 我有一个使用Visual Studio 2012构建的应用程序,因此它依赖于MSVCP110.DLL
和MSVCR110.DLL
.我正在使用另一个DLL文件,它似乎是用Visual Studio 2010构建的,依赖于MSVCP100.DLL
和MSVCR100.DLL
.我有另一个DLL是使用Visual Studio 2008构建并依赖于MSVCR90.DLL
.
这是坏事吗?真的很糟糕吗?我应该担心吗?我问的原因是运行时堆分配器抱怨堆损坏.这可能与混合运行时版本有关吗?
考虑以下短节目。
\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当我们尝试编译这个时,我们得到......
\nted@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 标签),但是这里到底出了什么问题?为什么编译器尝试使用空类型参数实例化我完全不相关的类,失败,然后生成错误?
也许更重要的是,每次我编写一个带有参数包的类时,我是否必须确保它可以在没有类型参数的情况下实例化,即使这对程序逻辑没有任何意义,以防万一它在一英里之内std::endl
?
如果我想找出gcc给我的隐式预处理器定义的内容,我可以输入echo "" | cpp -dD
.有谁知道clang的等价物是什么?
没关系,我是第一个创建纹理的人,我应该非常清楚我为它加载/生成了多少个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级别?
我一直在为BeagleBoard 的Angstrom Linux发行版工作.任何人都可以指点我的bitbake和OpenEmbedded如何实际工作的教程或参考?例如,当我像这样调用bitbake时:
bitbake virtual/kernel
Run Code Online (Sandbox Code Playgroud)
实际发生了什么?我已经研究了Angstrom的配方并搜索了Angstrom文件系统,但我似乎无法找到对虚拟或内核的引用.我觉得使用这个工具链并制作内核补丁并没有真正了解bitbake的工作方式,我感到有点沮丧.
我正在努力理解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++ ×5
boost ×2
boost-asio ×2
gcc ×2
iostream ×2
beagleboard ×1
c ×1
clang ×1
codesourcery ×1
darwin ×1
dll ×1
endl ×1
fullscreen ×1
kernel ×1
linux ×1
lsusb ×1
macos ×1
mingw ×1
mipmaps ×1
openembedded ×1
opengl ×1
openssl ×1
pyopengl ×1
qt ×1
qt5 ×1
rpath ×1
ssl ×1
templates ×1
textures ×1
usb ×1
visual-c++ ×1
winapi ×1