qInitResources()上的错误LNK2019 - RCC

时间:2016-12-16 13:55:01

标签: c++ qt visual-studio-2010 linker-errors lnk2019

我想在Visual Studio 2010中使用Qt编译项目。 我已经构建了所有必备库并将它们链接到项目属性中。

我还使用以下命令从project.qrc文件(rcc)中创建了.cpp文件:

  rcc project.qrc -name project -o qrc_project.cpp

按照http://www.qtcentre.org/archive/index.php/t-3425.html的说明进行操作。

使用以下行生成project.coo文件:

int QT_MANGLE_NAMESPACE(qInitResources_project)()
{
    QT_PREPEND_NAMESPACE(qRegisterResourceData)
        (0x01, qt_resource_struct, qt_resource_name, qt_resource_data);
    return 1;
}

Q_CONSTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qInitResources_project))

我还在项目中包含了.cpp文件。 虽然,我得到以下错误:

  

错误2611错误LNK2019:未解析的外部符号“int __cdecl   qInitResources_project(void)“(?qInitResources_project @@ YAHXZ)   在函数main D:\ usr \ Windows \ main.obj project

中引用

我对rcc做错了吗?有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

我通过生成.rcc文件和.cpp文件解决了我的问题,都使用项目名称而不是" qrc _"在它的开头。我还在我的项目中链接了两个文件。

似乎编译器找不到合适的文件,这就是我遇到链接错误的原因。

我用来生成上述文件的命令是:

  1. rcc -binary <path_to_qrc_file>.qrc -o <path_and_filename>.rcc

  2. rcc <path_to_qrc_file>.qrc -name <project_name> -o <path_and_filename>.cpp

答案 1 :(得分:0)

如果SO上没有任何内容可供您使用,我找到了一个非常简单的解决方法:

在VS中,您可以简单地将资源(图像或图标)放在库qrc文件中,而不是直接放在主项目qrc文件中。然后,在库项目中,您可以使用主项目中的路径引用图像,甚至无需调用QT_INIT_RESOURCE。

我认为这不是一个好的做法,但请记下在线尝试所有解决方案但仍无法正常工作的人。

答案 2 :(得分:0)

对于使用 CMake 的人:

您应该启用 AUTORCC 以自动编译 *.qrc 文件。

add_executable(project project.cpp project.qrc)

// enable autorcc and automoc
set_target_properties(project PROPERTIES AUTOMOC TRUE)
set_target_properties(project PROPERTIES AUTORCC TRUE)