小编Ano*_*ous的帖子

Qt 5.1.1:应用程序无法启动,因为缺少平台插件"windows"


编辑: 有些人开始将我的问题标记为重复.当我问这个问题时,不要忘记存在许多类似的问题(参见下面的列表).但是,这些答案都没有解决我的问题.经过长时间的搜索后,我发现了一条评论,该评论被指向缺少的lib的所有用户忽略.现在,几个月后,评论已经改为答案.然而,当我自己回答这个问题时,我打算通过直接提供解决方案来帮助其他人.这不应该被遗忘,到目前为止,我的答案帮助了很多人.因此,我的问题绝对不是重复的. 顺便说一句:在顶部提供的链接中接受的答案并不能解决问题!


是的,我使用了搜索:

无法加载平台插件"windows".可用平台有:错误

从Visual Studio qwindows.dll错误部署Qt C++应用程序

无法加载平台插件"windows"可用平台是:windows,minimal

但是,就我而言,问题仍然存在.我正在使用Qt 5.1.1与Visual Studio 2012,并使用Qt Creator 2.8.1在Windows 7上开发我的应用程序.应用程序以"Release"模式编译,如果直接使用Qt Creator启动,则可以执行.

但是,当从"release"-Folder开始时,我收到以下消息:

此应用程序无法启动,因为它无法找到或加载Qt平台插件"windows".可用的平台插件有:最小,屏幕外,窗户.

文件夹结构如下所示:

release
+ gui.exe
+ icudt51.dll
+ icuin51.dll
+ icuuc51.dll
+ libGLESv2.dll
+ Qt5Core.dll
+ Qt5Gui.dll
+ Qt5Widgets.dll
+ platforms
Run Code Online (Sandbox Code Playgroud)

平台是直接从Qt\Qt5.1.1\5.1.1\msvc2012\plugins\platforms复制的文件夹,包括例如qwindows.dll.如果我像其他一些用户那样将其重命名为"平台"并不重要.Qt仍然没有找到"平台插件窗口",我的错误在哪里?

c++ windows qt visual-studio-2012

114
推荐指数
8
解决办法
23万
查看次数

Visual Studio 2012中的C++单元测试

我正在使用Microsoft Visual Studio 2012 Ultimate来编写C++应用程序.我从MSDNAA访问中获得了该版本.我的问题是我想为我编写的C++类创建单元测试.

请注意: 它是标准的符合C++,没有混合,没有C#,它只是C++,也可以用g ++编译.

文件 - >新建 - >项目 - > Visual C++存在类似"托管测试项目"的东西:

但是当我创建这样一个项目时,我无法管理它来添加引用,例如"MyClass.h"和编译.我找不到一个简单的教程.

任何人都可以通过展示如何使用Visual Studio 2012设置简单的C++单元测试来帮助我吗?

c++ testing unit-testing visual-studio

10
推荐指数
1
解决办法
1万
查看次数

Linux:从给定的源文件自动创建C++ makefile

我有一个这样的项目结构:

src/main.cpp
src/Folder/this.cpp
src/Folder/that.cpp
src/NewFolder/foo.cp
// etc.
Run Code Online (Sandbox Code Playgroud)

另外我需要一些库,以便我可以链接,例如lboost_system.如何使用这些给定的信息简单地创建一个makefile?我一直在阅读有关手动创建makefile,CMake等等的内容,但这是我认为复杂的方法!是否有任何工具可以指定以下信息:

Source folder: /home/bla/src/
Additional Libs: lboost_system
Compiler Flags: -std=c++0x (or whatever)
Run Code Online (Sandbox Code Playgroud)

并生成一个makefile?!这真的很难吗?

c++ linux makefile

8
推荐指数
1
解决办法
2万
查看次数

为调试和发布配置设置cmake目标名称

我试图区分调试和发布版本.

如果调试构建过程中我想安装MYLIB d在/ usr/local/lib目录.如果正在发布版本,我想在/ usr/local/lib中安装myLib.

这是我的方法

IF(CMAKE_BUILD_TYPE MATCHES RELEASE)
    SET(LIB_NAME myLib) 
ELSE()
    SET(LIB_NAME myLibd) 
ENDIF(CMAKE_BUILD_TYPE MATCHES RELEASE)

ADD_LIBRARY(${LIB_NAME} ${Source_files} ${Header_files})
INSTALL(TARGETS ${LIB_NAME} DESTINATION /usr/local/lib)
Run Code Online (Sandbox Code Playgroud)

但是,目标名称在两种情况下(CMAKE_BUILD_TYPE = Debug或Release)始终是myLib d.这里有什么问题?

debugging configuration release cmake

6
推荐指数
1
解决办法
7501
查看次数

Eclipse:缺少C++运行配置?

美好的一天,

我用MinGW设置了Eclipse,我的项目编译得很好:

在此输入图像描述

但是,当我尝试通过创建运行配置来运行它时,我遇到的问题是没有像这里的C/C++本地应用程序:

在此输入图像描述

我看起来像这样:

在此输入图像描述

错过了什么?我需要做什么?

c c++ eclipse

5
推荐指数
1
解决办法
7754
查看次数

使用 boost asio 接收文本最有效的方法?

现在我通过以下方式收到短信:

    boost::asio::streambuf buffer;           
    std::string text;
    while(true) {   
        try
        {

            boost::asio::read_until(*m_pSocket, buffer, "END");

            text = boost::asio::buffer_cast<const char*>(buffer.data());
            buffer.consume(text.size());

            boost::asio::write(*m_pSocket, boost::asio::buffer(text, text.size()));
            std::cout << text<< std::endl;
        }
        catch (std::exception& e)
        {
            std::cerr << "Exception: " << e.what() << "\n";
            break;
        }       
    }
Run Code Online (Sandbox Code Playgroud)

当收到序列“END”时,我只是将收到的文本回显给客户端。我的问题:

在我看来,将该streambuf转换为字符串然后使用其中的文本符号的效率非常低。以良好、干净和高效的方式处理接收到的数据的正确方法是什么?

c++ boost boost-asio

5
推荐指数
1
解决办法
2652
查看次数

cmake:我必须以哪个顺序指定 TARGET_LINK_LIBRARIES

我一次又一次地为链接器问题苦苦挣扎,因为必须以正确的顺序指定 TARGET_LINK_LIBRARIES 中的所有库。但是我怎样才能确定这个顺序呢?例子:

我有以下库

libA depends on boost
libB depends on postgresql and libA (and therefore on boost)
myTarget uses libA, libB and boost directly (and through libB depends on postgresql)
Run Code Online (Sandbox Code Playgroud)

由于所有必需的库仅在创建可执行文件时才链接,因此在链接 myTarget(最终可执行文件)时必须指定所有库:

TARGET_LINK_LIBRARIES(${ApplicationName}  

libboost_program_options.a 
libboost_system.a 
libboost_filesystem.a 
libboost_date_time.a 
libboost_regex.a 

# Should include all boost libraries but strangely some libs (the ones above)
# need to be specified "by hand"???
${Boost_LIBRARIES} 

# PostgreSQL stuff
libpq.a
libsoci_core.a
libsoci_postgresql.a
libpq.so

# My libs
libB.a
libA.a

${CMAKE_THREAD_LIBS_INIT} # pthreads, needed by boost
${CMAKE_DL_LIBS} …
Run Code Online (Sandbox Code Playgroud)

c++ linker boost cmake

5
推荐指数
1
解决办法
2776
查看次数

使用boost :: program_options解析配置文件

美好的一天,

我写了一个类来通过boost :: program_options解析配置文件.这是我的(缩短):

namespace nsProOp = boost::program_options;
nsProOp::variables_map m_variableMap;
nsProOp::options_description m_description;



// To add options to the variableMap, e.g. "addOption<int>("money_amount");"
template <class T>
    void addOption(const std::string& option, const std::string& helpDescription = "") {
        m_description.add_options()(option.c_str(), nsProOp::value<T > (), helpDescription.c_str());
    }



// And this is how i actually read the file:
void ConfigFile::parse() {
    std::ifstream file;
    file.open(m_pathToFile.c_str());

    nsProOp::store(nsProOp::parse_config_file(file, m_description, true), m_variableMap);
    nsProOp::notify(m_variableMap);      
}
Run Code Online (Sandbox Code Playgroud)

好的,这很好用.但我希望能够再次解析同一个文件,以便我总是使用用户提供的最新条目!关于"商店"的提升文档说:

"在'm'中存储''选项'中定义的所有选项.如果'm'已经具有选项的非默认值,则该值不会更改,即使'options'指定了某个值."

所以,如果我再次调用"parse()"则没有任何反应,因为m_variableMap已被填充.我尝试调用m_variableMap.clear()并不能解决我的问题,因此存储只能在第一次工作.

有人给我一个建议吗?如果我的问题不清楚,请告诉我.谢谢!

c++ boost boost-program-options

4
推荐指数
1
解决办法
2万
查看次数

postgresql:更新最新插入行的快速方法

在不使用临时表的情况下修改最新添加的行的最佳方法是什么。例如表结构是

id | text | date
Run Code Online (Sandbox Code Playgroud)

我当前的方法是使用postgresql特定的命令“ returning id”进行插入,以便以后可以使用以下命令更新表

update myTable set date='2013-11-11' where id = lastRow
Run Code Online (Sandbox Code Playgroud)

但是我有一种感觉,PostgreSQL不仅使用最后一行,还遍历了数百万个条目,直到找到“ id = lastRow”。如何直接访问最后添加的行?

sql postgresql

4
推荐指数
1
解决办法
2982
查看次数

从JTable获取整数值?

我不明白; 我正在使用DefaultTableModel,我的尝试就是将这个值作为一个表格获取int:

Integer.parseInt( tableModel.getValueAt(i, 1) );
Run Code Online (Sandbox Code Playgroud)

Eclipse是说有必要从铸造ObjectString,所以日食使得如下:

Integer.parseInt( (String) tableModel.getValueAt(i, 1) );
Run Code Online (Sandbox Code Playgroud)

在运行时,程序崩溃,因为无法将"int转换为字符串".为什么?我期待"object - > string - > int".

java swing jtable

3
推荐指数
1
解决办法
1万
查看次数