Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Лишнии функции вызова в dll 
:(
    Опции темы
Romikgy
  Дата 24.6.2005, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Вопрос появился к гуру smile

Создал длл и все хорошо , все работает , только непонятка одна есть, в экспортах моей длл все мои функции по два раза перечислины, с одинаковыми точками входа, только в названии в конце добавляеться @4 или @8 .... зачем это нуно и как от этого избавиться?

и еще как в длл( или ехе) добавить инфу о версии , владельце и т.п.?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
oper54
Дата 24.6.2005, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 13.5.2005

Репутация: нет
Всего: 1



Вопрос вовсе не к гуру.
Про @4 или @8 - ты у своего компилятора спроси...
А версия добавляеться в ресурсы.
PM MAIL   Вверх
En_t_end
Дата 24.6.2005, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



oper54

Цитата(oper54 @ 24.6.2005, 16:02)
А версия добавляеться в ресурсы.

Не только... для своих плагинов можно вводить структуры данных, содержащих версию и хар-ки плагина.
PM MAIL ICQ Skype GTalk Jabber   Вверх
oper54
Дата 24.6.2005, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 13.5.2005

Репутация: нет
Всего: 1



En_t_end
Цитата
Не только... для своих плагинов можно вводить структуры данных, содержащих версию и хар-ки плагина.

Это интересно. Если можно подробнее...
PM MAIL   Вверх
Romikgy
Дата 24.6.2005, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(oper54 @ 24.6.2005, 12:02)
Вопрос вовсе не к гуру.
Про @4 или @8 - ты у своего компилятора спроси...
А версия добавляеться в ресурсы.

Как спросить у компилятора? и какие ресурсы необходимо задействовать?
Добавлено @ 13:59
Цитата(En_t_end @ 24.6.2005, 12:59)
oper54

Цитата(oper54 @ 24.6.2005, 16:02)
А версия добавляеться в ресурсы.

Не только... для своих плагинов можно вводить структуры данных, содержащих версию и хар-ки плагина.

Угу ... поточнее плз smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
En_t_end
Дата 24.6.2005, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Romikgy
Цитата
Угу ... поточнее плз

А чем не устраивает экспортировать что-то типа struct Test{char info_plug[MAX_INFO]; unsigned int unique; unsigned int version;}; Далее типизируем эту структуру в TEST. Потом и функцию какую-нибудь делаем экспортируемой типа TEST GetPlugInfo(); - в ней заполняем нужные поля структуры. И в самой программе после проецирования плагина сверяем допустимые значения своей структуры и структуры возвращаемой GetPlugInfo... если версия не устраивает, то делаем FreeLibrary(/**/)

Это сообщение отредактировал(а) En_t_end - 24.6.2005, 18:09
PM MAIL ICQ Skype GTalk Jabber   Вверх
rsm
Дата 25.6.2005, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 4
Всего: 62



Чтобы в экспортах не было всяких закорючек и прочих циферок, юзай объявления вида:
Код

extern "C" __declspec(dllexport) BOOL SomeFunction(DWORD dwAddress, LPBYTE lpbData);


Вывод инфы о плагине можно организовать например так:
Код

// plugs.h

typedef struct _PlugInfo {
    char *szAuthor;
    char *szWeb;
} PlugInfo;

typedef PlugInfo* (WINAPI* tPlugInfo) (void);

Код

// testdll.cpp

#include "plugs.h"

PlugInfo pis = { "rsm", "http://forum.vingrad.ru" };

extern "C" __declspec(dllexport) PlugInfo* GetPlugInfo(void)
{
    return &pis;    
}

Код

// testexe.cpp

#include "plugs.h"

void ShowPlugInfo(HWND hDlg)
{
    HMODULE hDll;
    PlugInfo *pis;
    tPlugInfo GetPlugInfo;

    hDll = LoadLibrary("testdll.dll");
    if(hDll)
    {
        GetPlugInfo = (tPlugInfo) GetProcAddress(hDll, "GetPlugInfo");
        if(GetPlugInfo)
        {
            pis = GetPlugInfo();
            MessageBox(hDlg, pis->szAuthor, "Author", MB_ICONINFORMATION);
            MessageBox(hDlg, pis->szWeb, "Web", MB_ICONINFORMATION);
        }
        FreeLibrary(hDll);
    }
}

PM MAIL   Вверх
Romikgy
Дата 25.6.2005, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



То есть такая форма :

extern "C" __declspec(dllexport) BOOL SomeFunction(DWORD dwAddress, LPBYTE lpbData);

избавит от добавления дополнительных функций со знаками @????

И второе вы меня не совсем правильно поняли, как выдать инфу о плагине в МОЮ прогу , я смогу придумать, а как выдать инфу , если на моей длл или ехе в винде правой кнопкой мыши надавили и попросили показать свойство, и там (у некоторых длл) есть пункт версия, я хочу туда ифну вывести!!! Так надеюсь яснее ?! smile smile smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
En_t_end
Дата 25.6.2005, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Romikgy
Ну тыды правда... только в ресурсах плагина создавать INFO и там писать, что нужно... хотя по мне - это лишнее расходование дискового простанства.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Romikgy
Дата 25.6.2005, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(En_t_end @ 25.6.2005, 09:32)
Romikgy
Ну тыды правда... только в ресурсах плагина создавать INFO и там писать, что нужно... хотя по мне - это лишнее расходование дискового простанства.

А по точнее ... или подскажи где почитать??? плз... smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
oper54
Дата 25.6.2005, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 13.5.2005

Репутация: нет
Всего: 1



Romikgy, в VC так - project -> add to project -> new -> resource script
в окошке workspace появится закладка ResourceView, insert -> version
PM MAIL   Вверх
rsm
Дата 25.6.2005, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 4
Всего: 62



Цитата(Romikgy @ 25.6.2005, 10:43)
избавит от добавления дополнительных функций со знаками @????

Избавит, проверено для компилятора из VC++ 2003.

Цитата(Romikgy @ 25.6.2005, 10:43)
как выдать инфу о плагине в МОЮ прогу

Мой код ты похоже вообще не анализировал. Функция ShowPlugInfo будет у тебя в программе и ее первый и единственный аргумент - хендл окна программы. Идентификаторы контролов у тебя есть (раз пишешь на голимом WinApi), хендл окна тоже есть. Так что мешает написать например так:
Код

SendDlgItemMessage(hDlg, IDC_AUTHOR, WM_SETEXT, 0, (WPARAM) pis->szAuthor);

PM MAIL   Вверх
Romikgy
Дата 25.6.2005, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(oper54 @ 25.6.2005, 12:14)
Romikgy, в VC так - project -> add to project -> new -> resource script
в окошке workspace появится закладка ResourceView, insert -> version

Сибо ОГРОМНОЕ нашел smile
Добавлено @ 14:17
Цитата(rsm @ 25.6.2005, 13:27)
Цитата(Romikgy @ 25.6.2005, 10:43)
избавит от добавления дополнительных функций со знаками @????

Избавит, проверено для компилятора из VC++ 2003.

Цитата(Romikgy @ 25.6.2005, 10:43)
как выдать инфу о плагине в МОЮ прогу

Мой код ты похоже вообще не анализировал. Функция ShowPlugInfo будет у тебя в программе и ее первый и единственный аргумент - хендл окна программы. Идентификаторы контролов у тебя есть (раз пишешь на голимом WinApi), хендл окна тоже есть. Так что мешает написать например так:
Код

SendDlgItemMessage(hDlg, IDC_AUTHOR, WM_SETEXT, 0, (WPARAM) pis->szAuthor);

1. Проверю сибо smile
2. нечего так нервничать, и это не я плохо читаю сообщения , а ВЫ т.к. я написал что знаю, как выдать инфу в мое приложение , мне необходимо было выдавать для оболочки винды!!! но все равно спасибо smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 29.6.2005, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



С выводом инфы все окей smile а вот с лишними ф-циями не получилось smile
Нашел такой параметр (как я понимаю компилятора) --add-stdcall-alias , если его поставить появлю нормальные имена и с @ , если его убрать то нормальные имена пропадают а с кракозяброй остаются smile КАК СДЕЛАТЬ ЧТОБ БЫЛО НАОБОРОТ ????


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
rsm
Дата 29.6.2005, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 4
Всего: 62



Цитата(Romikgy @ 29.6.2005, 14:52)
а вот с лишними ф-циями не получилось

Скорее всего у тебя в проекте мои объявления функций перекрываются объявлениями в *.def. Удали из проекта все файлы *.def и подчисти объявления всех экспортируемых функций в заголовках *.h (или исходниках *.cpp - куда ты их поместил?), исправив их так, как я написал. Должно сработать, см. в аттаче пример.

Это сообщение отредактировал(а) rsm - 29.6.2005, 13:47

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  dllexports.zip 2,55 Kb
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0606 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.