Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ATL DLL ядро и интерфейс на C#. 
V
    Опции темы
Partizan
Дата 5.3.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Цитата

COM просто мало кто теперь юзает (если именно в плане создания COM-серверов)


Если пишешь ShellExtensions без COM никуда ;)

Цитата

Добавил метод - всё равно его не видно.
с HRESULT  вообще не хочет компилироваться. 



Elfet, какая студия у Вас?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Любитель
Дата 5.3.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Цитата(Elfet @  5.3.2009,  16:16 Найти цитируемый пост)
Добавил метод - всё равно его не видно.

Покажи, что в idl получилось-то? И да - метод явно должен возвращать HRESULT в любом случае. Что не компилируется-то? Что выдаёт?

Цитата(Partizan @  5.3.2009,  16:53 Найти цитируемый пост)
Если пишешь ShellExtensions без COM никуда ;)

Да. Сейчас многое на COM основано в винде. И аддины для студии/оффиса - это тоже сейчас (пока) COM. Но, как я уже сказал зачастую сейчас уже COM-сервера девелопят на дотНете. Да и новые АПИ уже редко на COM основывают. Хотя, конечно АТЛ умирать не собирается. Но и развиваться ИМХО тоже.

В висте, Win7, насколько я понимаю, все новые АПИ уже не комовские. Хотя точно утверждать тут не берусь, ибо не знаю smile


--------------------
PM MAIL ICQ Skype   Вверх
Elfet
Дата 5.3.2009, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



VS2005. 
Вроде разобрался. Всем спасибо!
Код

interface IComponentRegistrar : IDispatch
{
    [id(1)]    HRESULT Attach([in] BSTR bstrPath);
    [id(2)]    HRESULT RegisterAll();
    [id(3)]    HRESULT UnregisterAll();
    [id(4)]    HRESULT GetComponents([out] SAFEARRAY(BSTR)* pbstrCLSIDs, [out] SAFEARRAY(BSTR)* pbstrDescriptions);
    [id(5)]    HRESULT RegisterComponent([in] BSTR bstrCLSID);
    [id(6)] HRESULT UnregisterComponent([in] BSTR bstrCLSID);
};

А можно как нибудь возвращать значения не через параметры? 


--------------------
PM MAIL WWW Skype   Вверх
Любитель
Дата 5.3.2009, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Цитата(Elfet @  5.3.2009,  17:25 Найти цитируемый пост)
А можно как нибудь возвращать значения не через параметры?  

Явно (в сишном коде) - нет. С точки зрения обращения к COM-серверу из клиента - можно один из параметров пометить как retval в IDL (в ATL Class Wizard-е можно выбрать галку для одного из параметров). Это и будет возвращаемое значение.


--------------------
PM MAIL ICQ Skype   Вверх
Elfet
Дата 5.3.2009, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Любитель, да, я так и сделал smile
Жутко неудобная это вещь COm оказалась smile

Добавлено через 9 минут и 8 секунд
Всё так я не очень понимаю. Можно ли как-то без использования COM сделать ядро на C++, а интерфейс на C#? 
C# - слишком медленный для больших вычислений. 


--------------------
PM MAIL WWW Skype   Вверх
Partizan
Дата 5.3.2009, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Elfet, ну конечно можно smile Написать обычную Dll-ку и дёргать из неё функции с помощью DllImport.


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Elfet
Дата 5.3.2009, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Что-то я не до втыкаю, как эту обычную дллку писать на C++? :(


--------------------
PM MAIL WWW Skype   Вверх
Partizan
Дата 5.3.2009, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67





--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Elfet
Дата 6.3.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



спасибо!


--------------------
PM MAIL WWW Skype   Вверх
ForveAvar
Дата 11.10.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток!!!!

У мну тут проблема такая же как у автора....при создании объекта для получения функций и переменных из класа  в com, я не могу к ним доступиться.....подскажите что нужно дописать

Calc.h
Код

// Calc.h: объявление CCalc

#pragma once
#include "resource.h"       // основные символы

#include "lab_02Com_i.h"

// CCalc

class ATL_NO_VTABLE CCalc :
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CCalc, &CLSID_Calc>,
    public ICalc
{
public:
    CCalc()
    {
    }

DECLARE_REGISTRY_RESOURCEID(IDR_CALC)

DECLARE_NOT_AGGREGATABLE(CCalc)

BEGIN_COM_MAP(CCalc)
    COM_INTERFACE_ENTRY(ICalc)
END_COM_MAP()



    DECLARE_PROTECT_FINAL_CONSTRUCT()

    HRESULT FinalConstruct()
    {
        return S_OK;
    }

    void FinalRelease()
    {
    }

public:
        double a,b;
        STDMETHOD(plus)(double *pVal);
        STDMETHOD(minus)(double *pVal);
        STDMETHOD(mnoj)(double *pVal);
        STDMETHOD(dil)(double *pVal);

};

OBJECT_ENTRY_AUTO(__uuidof(Calc), CCalc)


Calc.cpp
Код

// Calc.cpp: реализация CCalc

#include "stdafx.h"
#include "Calc.h"


// CCalc

STDMETHODIMP CCalc::plus(double *pVal)
{
    *pVal = a+b;
    return S_OK;
}
STDMETHODIMP CCalc::minus(double *pVal)
{
    *pVal = a-b;
    return S_OK;
}
STDMETHODIMP CCalc::dil(double *pVal)
{
    *pVal = a/b;
    return S_OK;
}
STDMETHODIMP CCalc::mnoj(double *pVal)
{
    *pVal = a*b;
    return S_OK;
}


Вызов
Код

...
using lab_02ComLib;

namespace lab_01
{
    public partial class Form1 : Form
    {
        int user_oper = 0;
        double first_value = 0, second_value = 0;
        bool minus_used = false;
        CalcClass c = new CalcClass();

        private void button3_Click(object sender, EventArgs e)
        {
             c.dil() //  Здесь само собой ошибка 
        }
    }
}


Com зарегистрированный и прибавленный к ссилкам проекта.

Помогите новичку smile 
PM MAIL   Вверх
ForveAvar
Дата 12.10.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хотя бы кто-то помогите.....очень нужно....третий день не могу разобраться smile 

Это сообщение отредактировал(а) ForveAvar - 12.10.2009, 17:47
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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