解决问题 - 请参阅底部的解决方案说明
我正在尝试构建一个简单的应用程序来测试支持以太网的微控制器.我想要做的就是发送和接收小的UDP数据包.代码使用boost :: asio进行网络连接,非常简单.为了进行调试,我将所有初始化从构造函数中移出,这样我就可以检查每一步.这是我的身体:
boost::system::error_code myError;
boost::asio::ip::address_v4 targetIP;
targetIP.from_string("10.1.1.75", myError); // Configure output IP address. HACKHACK--Hardcoded for Debugging
std::cout << "GetIP - " << myError.message() << std::endl;
std::cout << "IP: " << targetIP << std::endl;
boost::asio::ip::udp::endpoint myEndpoint; // Create endpoint on specified IP.
myEndpoint.address(targetIP);
myEndpoint.port(0x1000);
std::cout << "Endpoint IP: " << myEndpoint.address().to_string() << std::endl;
std::cout << "Endpoint Port: " << myEndpoint.port() << std::endl;
boost::asio::io_service io_service; // Create socket and IO service, bind socket to endpoint.
udp::socket socket(io_service);
socket.open( …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个静态库,作为网络设备的API发布.我可以成功编译和链接库以生成.lib输出文件,并将它们重定位到目录结构中,如下所示:
EyeLib
L-Include
| L-PublicInterface.h
L-Lib
| L-debug
| | L-MyLib.lib
| | L-MyLib.pdb
| L-release
| L-MyLib.lib
L-MyLibConfig.cmake
Run Code Online (Sandbox Code Playgroud)
MyLibConfig.cmake文件非常简单,包含:
# the header file is relative to this cmake file, so get the path.
GET_FILENAME_COMPONENT( MyLib_TOPLEVEL_DIR ${CMAKE_CURRENT_LIST_FILE} PATH )
SET( MyLib_INCLUDE_DIR ${MyLib_TOPLEVEL_DIR}/include )
IF( WIN32 )
FIND_LIBRARY( MyLib_DEBUG_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib/debug )
FIND_LIBRARY( MyLib_RELEASE_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib/release )
SET( MyLib_LIBRARIES optimized ${MyLib_RELEASE_LIBRARY} debug ${MyLib_DEBUG_LIBRARY} )
ENDIF( WIN32 )
IF( UNIX )
FIND_LIBRARY( MyLib_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib )
SET( MyLib_LIBRARIES "${MyLib_LIBRARY}" )
MARK_AS_ADVANCED( MyLib_LIBRARY …Run Code Online (Sandbox Code Playgroud) boost cmake static-libraries visual-studio visual-studio-2012
我正在尝试围绕现有的管理控制台应用程序包装GUI.主要功能是搜索网络设备,该网络设备被给予超时并且在超时到期之前基本上是阻塞呼叫(使用sleep来执行阻塞).在这个例子中,呼叫是this->Manager->Search(...).
我的问题是我希望QListWidget在搜索过程中显示"正在搜索...",然后在搜索完成时更新结果.我点击该Search按钮的代码如下:
void ManagerGUI::on_searchButton_clicked()
{
ui->IPList->clear();
new QListWidgetItem(tr("Searching..."), ui->IPList);
ui->IPList->repaint();
this->Manager->Search(static_cast<unsigned int>(this->ui->searchTime->value()*1000.0));
ui->IPList->clear();
if(this->Manager->GetNumInList() != 0)
this->displayFoundInList(this->Manager->GetFoundList());
else
new QListWidgetItem(tr("No Eyes Found"), ui->IPList);
ui->IPList->repaint();
}
Run Code Online (Sandbox Code Playgroud)
当我按下按钮时,QListWidget IPList直到超时发生后才会更新(我假设直到此回调终止后).有没有人有什么建议?我的印象是,调用ui->IPList->repaint()会导致立即重绘列表.
附加信息: