Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
skilllab
128 / 125 / 23
Регистрация: 03.02.2011
Сообщений: 1,581
Завершенные тесты: 1
#1

Передача интерфейса - C++

04.08.2013, 19:04. Просмотров 651. Ответов 8
Метки нет (Все метки)

Добрый день.
Есть DLL с парой экспортируемых функций. В функциях используются вычисления, основанные на стороннем API. Хотелось бы научиться возвращать из функций интерфейсы сторонних API в managed код.
Пример функции, которую использую сейчас для возврата стандартных типов:
C++
1
2
3
4
//stdafx.h
...
#import "AnotherAPP.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids
extern "C" _declspec(dllexport) int MatProp(double myVAR);
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Test.h
...
int MatProp(double myVAR)
{
    CComPtr<IAnotherAPP> myApp;
    CComPtr<IDocument> myDoc;
    HRESULT hres = NOERROR;
 
    CoInitialize(NULL);
    hres = myApp.CoCreateInstance(__uuidof(AnotherAPP), NULL, CLSCTX_LOCAL_SERVER);
    hres = myApp->put_UserControl(VARIANT_TRUE);
    hres = myApp->put_Visible(VARIANT_TRUE);
    hres = myApp->get_IActiveDoc2(&myDoc);
    CoUninitialize();
    return 0;
}
Подскажите пожалуйста примеры самых простых конструкций в С++ DLL для возвращения из функций интерфейсов. Если касаться моего примера, то как правильно вернуть интерфейс "myDoc"?
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2013, 19:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача интерфейса (C++):

Проектирование интерфейса: передача результата по цепочке - C++
// Main.h class Main () { public : Main() {} ~Main() {} vector&lt;int&gt; set(vector&lt;int&gt;...

Передача значения и передача переменной - C++
объясните мне разницу...и с кодами пожалуйста...думаю передача значений это через ссылки\указатели,а передача переменных-переменных ...

Построение интерфейса на VC++. - C++
Требуется построить интерфейс (MFC or WinApi не имеет значения), получается так:

Создание интерфейса c++ - C++
Я новичок в c++ уже около месяца ищу по поисковикам материал по созданию интерфейса в программе,раньше работал на php и там были заготовки...

Реализация графического интерфейса - C++
Добрый день.Долгое время уже изучаю c++,сейчас надоели консольные приложения,решил научиться делать кнопки и т.д. Почитал как это...

Отделение интерфейса от реализации - C++
Сделала рабочую программу. Нужно разделить интерфейс от реализации. Делаю как написано: добавить в проект заголовочный файл *.h; ...

8
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.08.2013, 19:07 #2
managed на плюсах? если да то можно CComPtr<IDocument> вернуть, разве нет?
0
skilllab
128 / 125 / 23
Регистрация: 03.02.2011
Сообщений: 1,581
Завершенные тесты: 1
04.08.2013, 19:11  [ТС] #3
Jupiter, не. На плюсах как раз unmanaged. Никаких CLR!!
А функцию из DLL буду вызывать в C#.

Добавлено через 2 минуты
Цитата Сообщение от Jupiter Посмотреть сообщение
можно CComPtr<IDocument> вернуть
Как? Где указывать возврат и как это должно выглядеть?
В аргументах функции по ссылке? (типа out)

И вот эта штука:
Цитата Сообщение от skilllab Посмотреть сообщение
CoUninitialize();
не потрёт все записи об использованных смартпоинтах в функции?
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.08.2013, 19:48 #4
skilllab, тогда Нейгел вам в руки. Книга "C# 4.0 и платформа .NET 4 для профессионалов", там описано взаимодейсвие COM и .NET, 26-я глава вроде
1
skilllab
128 / 125 / 23
Регистрация: 03.02.2011
Сообщений: 1,581
Завершенные тесты: 1
04.08.2013, 19:53  [ТС] #5
Jupiter, раздел то для новичков)))
Значит не разобрался с msdn или гуглом. Вот и конкретизирую вопрос на форуме.
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.08.2013, 20:40 #6
skilllab, в книге подробно описано что и как делать, да и это не 2+2, в рамках поста на форуме не уложиться
0
skilllab
128 / 125 / 23
Регистрация: 03.02.2011
Сообщений: 1,581
Завершенные тесты: 1
04.08.2013, 20:58  [ТС] #7
Jupiter, ок. Тогда спасибо за наводку.
0
skilllab
128 / 125 / 23
Регистрация: 03.02.2011
Сообщений: 1,581
Завершенные тесты: 1
05.08.2013, 22:37  [ТС] #8
Прочитал. Не то.
Мне не нужно создавать свой COM сервер. Мне нужно тупо вернуть интерфейс. Или умный указатель. И его уже буду преобразовывать.
Посылать новичка создавать собственные интерфейсы, да ещё с применением сторонних разработок (API) - не гуманно))
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.08.2013, 22:52 #9
Цитата Сообщение от skilllab Посмотреть сообщение
Мне не нужно создавать свой COM сервер. Мне нужно тупо вернуть интерфейс.
по-другому нельзя
0
05.08.2013, 22:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2013, 22:52
Привет! Вот еще темы с ответами:

Дополнение интерфейса объекта - C++
Есть базовый класс Parent. Есть дочерний класс Child. Дочерний класс делает ровно одну вещь - добавляет пару не виртуальных методов в...

Отделение интерфейса от реализации - C++
Доброго времени суток! Имеется вопрос по теме, обозначенной в заголовке. Предположим, я разрабатываю класс. Я создаю два файла:...

Создание интерфейса программы - C++
Здравствуйте, прошу вас мне помочь. Хочу создать приложение на с++, приложение должно будет при запуске просить ввод пароля, и после в...

Создание графического интерфейса - C++
Дали задание написать матричный калькулятор.Я вроде с этим справился теперь нужен интерфейс для неё .раньше никогда не делал.использую...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.