Имею microsoft visual c++ 2010 express. Эта версия имеет некоторые ограничения в работе с ресурсами (например нельзя отредактировать rc файл из под IDE, пункта для создания rc файла так же не нашёл). Но сам компилятор ресурсов присутствует.
У меня такой вопрос, возможно ли имея express версию студии добавить ресурсы к dll и если возможно, то что я тогда делаю не так?
А пытаюсь я это сделать следующим способом
1. Создал файл ресурсов
C++ (Qt)
#include "..\resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 0, 0, 100
PRODUCTVERSION 1, 0, 0, 1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
#else
FILEFLAGS 0x8L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Comments", "Comments"
VALUE "CompanyName", "MyCompany"
VALUE "FileDescription", "FileDescription"
VALUE "FileVersion", "1, 0, 0, 100"
VALUE "InternalName", "InternalName"
VALUE "LegalCopyright", "Copyright (C) 2010"
VALUE "OriginalFilename", "npapi_plugin.dll"
VALUE "PrivateBuild", "RCVERSION-20030212_100"
VALUE "ProductName", "ProductName"
VALUE "ProductVersion", "1, 0, 0, 1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
"\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
#endif // не APSTUDIO_INVOKED
2. Добавил правило для сборки в cmake
Bash
list(APPEND RCFILE ${PROJECT_SOURCE_DIR}/win_resources.rc)
add_library(${PROJECT} SHARED ${SOURCES}
${DEFFILE}
${RCFILE}
3. Компилирую
Dll компилируется, ресурсы тоже, но реально в dll никакой информации не добавляется.
Почему?
Такая вот новая информация. Если я генерирую файл проекта для студии
Bash
cmake -G "Visual Studio 10" ..
открываю проект и компилирую уже с студии, то все отрабатывает правильно. Ресурсы добавляются.
Если я делаю так
Bash
cmake -G "NMake Makefiles" ..
и компилирую в консоли (этот вариант мне больше подходит), ресурсы к dll не добавляются.
Чего может не хватать?
Возможно проблема связана с этим багом (http://www.cmake.org/Bug/view.php?id=4068)?