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

Поиск:

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


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


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

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



А чем они вообще отличаются? с COM/ATL и без?


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


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


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

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



Одно дело длл-ка, которая экспортирует просто какие-то функции и другое - COM-сборка. Строго говоря, COM тоже экспортирует функции, но жёстко определённые. А вообще - прочитайте хотя бы в двух словах про технологию COM, ну и 9раз таково условие) в специфике использования в ATL.


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


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


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

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



А дайте что-нибудь про COM почитать? smile


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


Let's do some .NET
****


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

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





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


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


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

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



спасибо!  smile 


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


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


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

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



Не хочу разводит много тем. Спрошу тут:
Сделал этот ATL DLL я. Добавил в неё класс: CSolver. Зарегистрировал в системе. Добавил в проект на C#. Но вот тут проблема создаю объект: solver = new SFCLib.SolverClass();
А вот свойства его публичные не доступны :/
Что я те так делаю?
Код:
Solver.h
Код

// Solver.h : Declaration of the CSolver

#pragma once
#include "resource.h"       // main symbols

#include "SFC.h"


#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
#error "Single-threaded COM objects are not properly supported on Windows CE platform, such as the Windows Mobile platforms that do not include full DCOM support. Define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA to force ATL to support creating single-thread COM object's and allow use of it's single-threaded COM object implementations. The threading model in your rgs file was set to 'Free' as that is the only threading model supported in non DCOM Windows CE platforms."
#endif



// CSolver

class ATL_NO_VTABLE CSolver :
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CSolver, &CLSID_Solver>,
    public IDispatchImpl<ISolver, &IID_ISolver, &LIBID_SFCLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
    CSolver()
    {

    }

DECLARE_REGISTRY_RESOURCEID(IDR_SOLVER)


BEGIN_COM_MAP(CSolver)
    COM_INTERFACE_ENTRY(ISolver)
    COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()



    DECLARE_PROTECT_FINAL_CONSTRUCT()

    HRESULT FinalConstruct()
    {
        return S_OK;
    }

    void FinalRelease()
    {
    }

public:
    void Init(int);
    int Progress();
    int i;
    int iMax;
    bool Iteration();
};

OBJECT_ENTRY_AUTO(__uuidof(Solver), CSolver)



Solver.cpp
Код

// Solver.cpp : Implementation of CSolver

#include "stdafx.h"
#include "Solver.h"

// CSolver
void CSolver::Init(int _iMax)
{
    iMax = _iMax;
    i = 0;
}

int CSolver::Progress()
{
    return (int)((float)i / iMax * 100);
}

bool CSolver::Iteration()
{
    if(i < iMax)
    {
        i++;
        return true;
    }
    else
    {
        return false;
    }
}






Form.cs
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SFApp
{
    public partial class Form1 : Form
    {
        private SFCLib.SolverClass solver;
        public Form1()
        {
            InitializeComponent();
            solver = new SFCLib.SolverClass();
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            solver.Init(); // Error    1    'SFCLib.SolverClass' does not contain a definition for 'Init'    E:\Visual Studio 2005\Projects\SFApp\SFApp\Form1.cs    22    20    SFApp

        }
    }
}



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


Let's do some .NET
****


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

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



Elfet, видимо idl-декларации не хватает + как правило геттеры называют типа get_Progress(), а сеттеры - set_Progress()

http://www.rsdn.ru/forum/message/158854.all.aspx


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


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


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

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



Я вообще не использую никакие интерфейсы. Можно ли как-то просто получить доступ к классу в этой dll? Создать экземпляр класса? 


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


Let's do some .NET
****


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

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



Elfet, ну так у вас же всё создаётся....Просто Interop-сборка генерируется по tlb-шке, которая, в свою очередь появляется из idl-декларации...

у вас в ATL проекте есть файл ИМЯ_ПРОЕКТА.idl - это и есть idl-декларация вашего класса


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


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


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

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



И что туда нужно добавить? 


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


Let's do some .NET
****


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

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





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


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


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

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



Цитата(Elfet @  4.3.2009,  23:47 Найти цитируемый пост)
И что туда нужно добавить?  

Лучше вручную ничего не пиши. Там в Class view, выбираешь add method, add property и тебе пропишется и idl для интерфейса, и заглушка для реализации. ATL всё-таки в своё время неплохая вещь была ;)


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


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


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

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



Любитель, значит сейчас всё-таки какая-то замена ATL пришла?


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


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


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

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



Ээ.. COM просто мало кто теперь юзает (если именно в плане создания COM-серверов). Да и тем более, при возможности, на .NEt это сделать гораздо проще.


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


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


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

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



Любитель, это не помогло :(

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


--------------------
PM MAIL WWW Skype   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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