powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Господа гуру помогите COM+ dll собрать
12 сообщений из 12, страница 1 из 1
Господа гуру помогите COM+ dll собрать
    #33615534
Aнжeлочкa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здрасти.
У меня следующая проблемма:
Необходимо создать DLL, которую потом подключим к проэкту на VB или C#. В библиотеке будет класс с одним методом который забивает 4 параметра строковыми значениями. В методе будет использоваться ассемблер, потому такое возможно сделать на C++ или на разновидности ASMа. Проблемма в том, что ни того, ни другого я не знаю :)
В общем я решила что VC++7.0 тут будет эффективнее.
В результате целого дня мучений у меня получилось следующее:
1.Создала ATL проэкт "TestClasses". (Dynamic-Link Library, Nonattributed)
2.Через Class View добавила класс. "Info" (ATL simple object), в настройках ничего не меняла.
3.Через Class View добавила свойство "А" для интерфейса "IInfo"
4.Через Class View добавила процедуру "mTest" для интерфейса "IInfo"

Код: plaintext
1.
2.
3.
4.
interface IInfo : IDispatch{
	[propput, id( 1 ), helpstring("property A"), bindable, local] HRESULT A([in] BSTR newVal);
	[propget, id( 1 ), helpstring("property A"), bindable, local] HRESULT A([out, retval] BSTR* pVal);
	[id( 2 ), helpstring("method mTest"), local] HRESULT mTest([in] BSTR i);
};

Компилирую, подключаю к проекту библиотеку. Создаю экземпляр класса Info. Свойство А и метод mTest там есть.
Помогите плиз теперь написать код, который будет принимать строковый параметр "i" и записывать его в свойство класса "А". Свой проект я прекрипила.
Спасибо всем, кто прочел до конца бред начинающей программистки :)
...
Рейтинг: 0 / 0
Господа гуру помогите COM+ dll собрать
    #33616579
Aнжeлочкa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите хоть как использовать эти виртуальные процедуры и свойства.
...
Рейтинг: 0 / 0
Господа гуру помогите COM+ dll собрать
    #33616633
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
виртуальные при отсутствии наследования ? оригинально
или просто слово красивое ?
...
Рейтинг: 0 / 0
Господа гуру помогите COM+ dll собрать
    #33616738
Aнжeлочкa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aнжeлочкa... будет использоваться ассемблер, потому такое возможно сделать на C++ или на разновидности ASMа. Проблемма в том, что ни того, ни другого я не знаю :)

Не смейтесь над бедной студенткой. Лучше подскажите что делать.
P.S. Спасибо за критику :) позже обязательно разберусь.
...
Рейтинг: 0 / 0
Господа гуру помогите COM+ dll собрать
    #33616865
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то архив не открывается...
На асме должны быть написаны get_A и put_A? (если я не ошибаюсь их визард имменно так назвать должен был). Тогда для начала надо объявить в Info какую-нибудь переменную типа
Код: plaintext
1.
CString m_Str;
если без асма, то
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
HRESUULT get_A(..........)
{
     *pVal = ::SysAllocString(m_Str);
}

HRESUULT put_A(..........)
{
     m_Str = newVal;
}
Где-то так.
...
Рейтинг: 0 / 0
Господа гуру помогите COM+ dll собрать
    #33618610
Aнжeлочкa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Балтика
Код: plaintext
1.
2.
3.
HRESUULT get_A(..........)
{
     *pVal = ::SysAllocString(m_Str);
}

возникает ошибка:
Код: plaintext
error C2664: 'SysAllocString' : cannot convert parameter 1 from 'ATL::CString' to 'const OLECHAR *'
Если в Info объявляю переменную
Код: plaintext
BSTR m_Str;
то начинает работать, только текст не читаемый :(
и методы выглядят несколько иначе
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
STDMETHODIMP CInfo::get_A(BSTR* pVal)
{
	// TODO: Add your implementation code here
	*pVal = ::SysAllocString(m_Str);
	return S_OK;
}

STDMETHODIMP CInfo::put_A(BSTR newVal)
{
	// TODO: Add your implementation code here
	m_Str = newVal;
	return S_OK;
}
...
Рейтинг: 0 / 0
Господа гуру помогите COM+ dll собрать
    #33618615
Aнжeлочкa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения забыла файлик прикрепить :)
...
Рейтинг: 0 / 0
Господа гуру помогите COM+ dll собрать
    #33619507
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если BSTR, тогда так:
Код: plaintext
1.
2.
3.
4.
5.
6.
STDMETHODIMP CInfo::put_A(BSTR newVal)
{
	// TODO: Add your implementation code here
	m_Str = SysAllocString(newVal);
	return S_OK;
}
Деструктор еще
Код: plaintext
1.
2.
3.
4.
5.
CInfo::~CInfo()
{
    if (m_Str)
          ::SysFreeString(m_Str);
}
...
Рейтинг: 0 / 0
Господа гуру помогите COM+ dll собрать
    #33619528
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точнее так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
STDMETHODIMP CInfo::put_A(BSTR newVal)
{
// TODO: Add your implementation code here
    if (m_Str)
        ::SysFreeString(newVal);
    m_Str = newVal? SysAllocString(newVal) : NULL;
    return S_OK;
}
В конструкторе
Код: plaintext
1.
m_Str = NULL;
...
Рейтинг: 0 / 0
Господа гуру помогите COM+ dll собрать
    #33619669
Aнжeлочкa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ммм... красота то какая :) спасибо большое!
...
Рейтинг: 0 / 0
Господа гуру помогите COM+ dll собрать
    #33619712
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aнжeлочкaммм... красота то какая :) спасибо большое!Млин.Никакой красоты. Вот так нада.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
STDMETHODIMP CInfo::put_A(BSTR newVal)
{
// TODO: Add your implementation code here
    if (m_Str)
        ::SysFreeString(m_Str);
    m_Str = newVal? SysAllocString(newVal) : NULL;
    return S_OK;
}
...
Рейтинг: 0 / 0
Господа гуру помогите COM+ dll собрать
    #33620109
Aнжeлочкa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В прежнем варианте тоже неплохо работало :) хоть и не правильно наверное.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Господа гуру помогите COM+ dll собрать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]