Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 68

Подключение библиотеки из ресурсов проекта

04.02.2013, 14:47. Показов 2307. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
проект в MFC
Есть некая библиотека, не майкрософтская, добавленная в ресурсы проекта. как подключать ее из ресурсов для использования функций.
Сделано это для того, чтобы на выходе оставался один ехе-файл, и работал на чистой винде без этой библиотеки.

На WIN32 я использовал решение подключения библиотек с помощью MemoryModule,
Но в МФС оно не пашет(
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.02.2013, 14:47
Ответы с готовыми решениями:

Работа с картинками из ресурсов проекта и сборка проекта
Всем привет! Проблема вот в чем, я добавил в ресурсы проекта несколько картинок и хочу вывести их в Image. Как задать полный путь через...

Подключение библиотеки Crypto. Если возможно, нужна ссылка на скачивание данной библиотеки
Возникли сложности с подключением библиотеки Crypto: import Crypto.Cipher.AES Выдает следующую ошибку: ...

Создание библиотеки ресурсов
Здравствуйте, Требуется создать библиотеку ресурсов. Ресурсы 2х типов - текстовые файлы и изображения. Нужно сделать их хранение в...

11
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
04.02.2013, 16:07
C++
1
2
#include <blablabla>
#pragma comment(lib,"nasha_liba.lib")
0
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 68
04.02.2013, 17:32  [ТС]
библиотека должна быть встроена в .ехе файл. т.е. я ее кидаю в ресурсы. она не виндовая, а значит не загружена в память (насколько я понимаю) поэтому мне нужно ее как-то загрузить
думаю #include тут не поможет. притом

кстати если что под библиотекой имеется ввиду flash.ocx файл, AdobeFlash. Я хочу воспроизводить флешки даже если у пользователя не установлен адоуб.

Проблема собственно в том, что раньше (в вин32) я использовал буржуйский код MemoryModule.h& MemoryModule.c а в МФС он не работает, так как ругается на "С". Если отключаю предкомпелированные заголовки, тогда ошибка на неоднократно используемый символ...

Поэтому я и подумал что может быть в МФС можно как-то иначе загрузить длл
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
04.02.2013, 17:39
Цитата Сообщение от xman911 Посмотреть сообщение
думаю #include тут не поможет. притом
- инклуд был лиш указаем того что pragma comment должно идити сразу же после хедеров

Цитата Сообщение от xman911 Посмотреть сообщение
она не виндовая, а значит не загружена в память
- ну так как можно полагать что она заработает на NT?

Цитата Сообщение от xman911 Посмотреть сообщение
MemoryModule.h& MemoryModule.c
- я вообще таких функций не знаю, пишу в MFC ну лет 10 точно

Цитата Сообщение от xman911 Посмотреть сообщение
кстати если что под библиотекой имеется ввиду flash.ocx файл, AdobeFlash.
-погугли либо использование директивы #import либо вот наглядный пример как прикрутить ocx от Windows Media Player11 ActiveX Media Player mfc
0
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 68
04.02.2013, 17:39  [ТС]
собственно вот проект(стандартный мфс+ этот MemoryModule.h, MemoryModule.c) может у кого нить скомпилится.... тут вполне может быть нужно что-то в настройках проекта попроавить.... тольков от что?
Вложения
Тип файла: zip MFCApplication1.zip (141.4 Кб, 8 просмотров)
0
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 68
04.02.2013, 17:41  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ибо вот наглядный пример как прикрутить ocx от Windows Media Player11 activex media player mfc
а он будет работать если на винде нет такого .ocx?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
04.02.2013, 17:43
Цитата Сообщение от xman911 Посмотреть сообщение
а он будет работать если на винде нет такого .ocx?
- нет надо DLL-ка с этим компонентом, иначе програмка при запуске напишет - заданный ocx не найден либо не зарегестрирован в системе. На крайняк указанную DLL можно таскать вместе с програмкой
0
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 68
04.02.2013, 19:56  [ТС]
а нужно зашить осх в ресурс, потом его самому зарегать в винде и использовать... собственно такая вот задача непростая.
Если бы получилось скомпилить мой проект вместе с теми .с файлами - все бы получилось... но падла мфс ругается на них, а я не знаю что нужно и как настроить в проекте

Добавлено через 19 минут
интересно, а прокатит если попробовать зарегать самому? ну вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
BOOL CFooApp::RegisterOCX(CString strName)
{
    HMODULE hModule = LoadLibrary((LPCTSTR)strName);
    CString strError;
 
    if (hModule == NULL)
    {
        strError = "LoadLibrary " + strName + " failed!";
        AfxMessageBox(strError);
        return FALSE;
    }
 
    FARPROC fp = GetProcAddress(hModule, "DllRegisterServer");
    if (fp == NULL)
    {
        strError = "Exported function DllRegisterServer not found!";
        AfxMessageBox(strError);
        return FALSE;
    }
 
    CoInitialize(NULL);
    HRESULT hRes = fp();
    if (SUCCEEDED(hRes))
    {
        return TRUE;
    }
 
    CoUninitialize();
    return FALSE;
}
Добавлено через 1 час 17 минут
вобщем нужно только скомпилировать этот MemoryModule.c как-то в MFC - это единственный способ загрузки активХ из ресурсов, походу. итак я потратил день - и все на том же месте((((

Добавлено через 8 минут
там получается вот так работать потом должно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
CreateInstance(ID_OCX,L"BIN"); // так вызывается... ID_OCX - это осх-файл в ресурсах, BIN - это где он там лежит
 
HRESULT CreateInstance(UINT id , WCHAR* resType)
{
 
 
    if(hInst == NULL)
        return S_FALSE;
    if(isInit)
        return S_FALSE;
 
    IClassFactory* clf = NULL;
    HRSRC hResInfo = ::FindResource(hInst, MAKEINTRESOURCE(id), resType);
    if(!hResInfo)
        return S_FALSE;
 
    DWORD dwFlashOCXCodeSize = ::SizeofResource(hInst, hResInfo);
    if(dwFlashOCXCodeSize == 0)
        return S_FALSE;
 
    HGLOBAL data = ::LoadResource(hInst, hResInfo);
    if(!data)
        return S_FALSE;
 
    LPVOID lpFlashOCXCode = ::LockResource(data);
    if(!lpFlashOCXCode)
        return S_FALSE;
 
    HMEMORYMODULE hMem = MemoryLoadLibrary(lpFlashOCXCode); // это уже функции пошли из MemoryModule.c
    if(!hMem )
        return S_FALSE;
 
    LPGetClassObject fLPGetClassObject = (LPGetClassObject)MemoryGetProcAddress(hMem, "DllGetClassObject");
    if(!fLPGetClassObject )
        return S_FALSE;
 
    fLPGetClassObject(CLSID_ShockwaveFlash, IID_IClassFactory, (LPVOID*)&clf);
    if(!clf )
        return S_FALSE;
 
    HRESULT hr = clf->CreateInstance(NULL, __uuidof(IShockwaveFlash),(void**)&flash);
    clf->Release();
    isInit = hr == S_OK;
    return hr;
 
}
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
04.02.2013, 23:48

Не по теме:

xman911, не смогу линкануть, у меня 2008-ая там нет CShellManager, CMFCVisualManager и т.д. Там был verrsc.h в самом MFCApplication1.rc убери его и по идеи всё будет линковаться



Добавлено через 2 минуты

Не по теме:

В любом случае самое основное в проекте class CMFCApplication1Dlg : public CDHtmlDialog это наследование того ActiveX о котором упоминал, верней наследование класса который аналогичен по функционалу IWebBrouser.

0
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 68
05.02.2013, 12:06  [ТС]
короче получилось! все компилится!
Думаю у меня на работе просто студия слетела, так как пришел домой - и сделал все за час. Конечно потом были другие фаталы - но уже более явные и их получилось исправить.
А так советую всем, кому нужно грузить либу из ресурсов в память способ "MemoryModule". Так можно таскать только 1 .ехе и пофик зарегана ли либа на компе ранее. (конечно размерчик приложение будет пропорционален размеру либ)

вот источник
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
05.02.2013, 13:09
Цитата Сообщение от xman911 Посмотреть сообщение
А так советую всем, кому нужно грузить либу из ресурсов в память способ "MemoryModule". Так можно таскать только 1 .ехе и пофик зарегана ли либа на компе ранее. (конечно размерчик приложение будет пропорционален размеру либ)
что будет если запустить две,три копии программы

нормальный путь библиотека отдельно. тебя не прельшает?
если нужно в одном файле создай установщик или архив
0
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 68
05.02.2013, 13:23  [ТС]
нормальный путь библиотека отдельно. тебя не прельшает?
В данном случае нет. как ты запустишь программу если ActiveX не зарегестрирован ренее в винде, и его вообще нет? что если пользователь удалит рядом лежащий .ocx-файл... В любом случае у меня задача использовать нужную либу независимо от того есть она на винде или нету + на выходе только .ехе файл. Есть способ другой? С удовольствием посмотрю)
и да, мне не нужно запускать 100 копий моей программы. будет запущенна только одна)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2013, 13:23
Помогаю со студенческими работами здесь

Загрузка ресурсов из библиотеки
Каким образом загрузить картинку из библиотеки в ресурсы запущенного приложения?

Библиотека из ресурсов библиотеки
Доброго времени суток! Есть ли возможность использовать стороннюю библиотеку, если добавить её в ресурсы собственной библиотеки? То есть, у...

Создание библиотеки ресурсов dll
Здравствуйте! Программа использует много графических ресурсов, потому хотелось бы &quot;запихнуть&quot; их в отдельную библиотеку dll и...

Планирование ресурсов проекта
Добрый день всем! Помогите кто-нибудь. В универе дали тему курсача &quot;Планирование ресурсного обеспечения проекта на примере&quot; может...

Вызов справки из ресурсов проекта
Всем привет, народ подскажите как из ресурсов проекта открыть файл справки (Help.chm)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru